用于1D输入的LSTM-TensorFlow异常

时间:2018-12-04 20:26:11

标签: python tensorflow input keras lstm

我正在研究2层RNN(LSTM)。我认为我已经成功重塑了我的训练和测试集,但是当我尝试运行代码时,它停止并显示以下异常:

  

例外:使用TensorFlow时,您应明确定义   序列的时间步数。如果您的第一层是   嵌入时,请确保向其传递“ input_length”参数。除此以外,   确保第一层具有“ input_shape”或“ batch_input_shape”   参数,包括时间轴。

我尝试了几种配置,但是没人能很好地工作。我不知道如何解决。.

这是我创建模型并重塑X_train和X_test的代码

X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], EMB_SIZE))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], EMB_SIZE))


print 'Building model...'

model = Sequential()

model.add(LSTM(input_dim=EMB_SIZE, output_dim=100, return_sequences=True, input_shape=(X_train.shape[1], X_train.shape[2], 1)))
model.add(LSTM(input_dim=EMB_SIZE, output_dim=100, return_sequences=False,input_shape=(X_train.shape[1], X_train.shape[2], 1)))

model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(optimizer='adam', 
              loss='mse',
              metrics=['accuracy'])

model.fit(X_train, 
          Y_train, 
          nb_epoch=5, 
          batch_size = 128, 
          verbose=1, 
          validation_split=0.1)


score= model.evaluate(X_test, Y_test, batch_size=128)
print score

我们非常感谢您的帮助!

预先感谢您<3

1 个答案:

答案 0 :(得分:0)

最后一层的单位数定义了模型的输出形状。

输出形状必须与目标(Y)相同。

  • Dense(2)->输出形状=(无,2)
  • Dense(1)->输出形状=(无,1)
  • Y_train->目标形状=(15015,1)

哇... Keras 0.3.3吗?难怪一切都会有问题。