我正在研究LSTM模型。
输出是分类数据。
其格式为[[t11,t12,t13],[t21,t22,t23]]
我能够在一维数组上实现,但对于二维数组我发现有些困难。
from keras.utils import to_categoricalprint(to_categorical([[9,10,11],[10,11,12]]))
输出
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
有两个不同的输入,每个输入有3个时间步,但在输出中它们都被合并了。
我需要的输出是,
[[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]],[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.][ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]]
回答:
如果形状很奇怪,可以尝试将其变成一维,使用函数,然后再重塑回原来的形状:
originalShape = myData.shapetotalFeatures = myData.max() + 1categorical = myData.reshape((-1,))categorical = to_categorical(categorical)categorical = categorical.reshape(originalShape + (totalFeatures,))