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

Numpy 如何使用批量为1的Keras LSTM?(避免零填充),numpy,keras,lstm,Numpy,Keras,Lstm,我想使用一个批量来训练Keras LSTM。 在这种情况下,到目前为止,我不需要零填充。零填充的必要性来自于均衡批次的大小,对吗 事实证明这并不像我想的那么容易 我的网络如下所示: model = Sequential() model.add(Embedding(output_dim=embeddings.shape[1], input_dim=embeddings.shape[0], weights=[embeddings],

我想使用一个批量来训练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:target:expected activation\u 1有3个维度时出错,但是得到了一个形状为(2161,1)的数组

我不知道如何在没有零填充的情况下满足这个3-D属性,这是我在处理1的批大小时想要避免的


有人看到我做错了什么吗?

model.summary()中的预期输出形状是什么?Y应为(批处理、时间步、类别)。