![](/img/trans.png)
[英]Correcting input dimensions for CNN, LSTM based classifier using Keras, Python
[英]Keras in Python: LSTM Dimensions
我正在建立一个LSTM网络。 我的数据如下:
X_train.shape = (134, 300000, 4)
X_train包含134个序列,具有300000个时间步长和4个特征。
Y_train.shape = (134, 2)
Y_train包含134个标签,[1,0]表示True,[0,1]表示False。
下面是我在Keras中的模型。
model = Sequential()
model.add(LSTM(4, input_shape=(300000, 4), return_sequences=True))
model.compile(loss='categorical_crossentropy', optimizer='adam')
每当我运行模型时,都会出现以下错误:
Error when checking target: expected lstm_52 to have 3 dimensions, but got array with shape (113, 2)
它的形状似乎是(113,2),与我的Y_train数据有关。
谢谢!
您的LSTM层的输出形状为(batch_size, 300000, 4)
(因为return_sequences=True
)。 因此,您的模型期望目标y_train
具有3维,但是您传递的数组只有2维(batch_size, 2)
。
您可能想改用return_sequences=False
。 在这种情况下,LSTM层的输出形状将为(batch_size, 4)
。 此外,您应该在模型中添加最终的softmax图层,以具有所需的输出形状(batch_size, 2)
:
model = Sequential()
model.add(LSTM(4, input_shape=(300000, 4), return_sequences=False))
model.add(Dense(2, activation='softmax')) # 2 neurons because you have 2 classes
model.compile(loss='categorical_crossentropy', optimizer='adam')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.