如何使用批量大小为1的Keras LSTM? (避免零填充)

时间:2017-12-25 11:14:01

标签: numpy keras lstm

我想使用一个批量大小训练Keras LSTM。 在这种情况下,到目前为止,我不需要零填充。零填充的必要性来自均衡批量的大小,对吗?

事实证明这并不像我想象的那么容易。

我的网络如下:

model = Sequential()
model.add(Embedding(output_dim=embeddings.shape[1],
input_dim=embeddings.shape[0],
                     weights=[embeddings],
                     trainable=False))
model.add(Dropout(0.2))
model.add(Bidirectional(LSTM(100,
           return_sequences=True,
           activation="tanh",kernel_initializer="glorot_uniform")))
model.add(TimeDistributed(Dense(maxLabel)))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy',
          optimizer='sgd',
          metrics=['accuracy'])

model.fit(x_train, y_train, epochs=20, batch_size=1, shuffle=True)

我天真地将我的训练数据和训练标签提供为具有此形状属性的简单numpy数组: X:(2161,) Y:(2161,)

我现在得到ValueError: Error when checking target: expected activation_1 to have 3 dimensions, but got array with shape (2161, 1)

我不确定如何在没有零填充的情况下满足这个3-D属性,这是我在使用批量大小时要避免的。

有人看到我做错了吗?

0 个答案:

没有答案