如何改变Keras中间层的批量大小?
我的问题是从LSTM获取所有隐藏的输出,并将它们用作单个密集层的训练示例。将隐藏层的输出展平并将其提供给密集层不是我想要做的。我试过以下几件事:如何改变Keras中间层的批量大小?,keras,updatebatchsize,Keras,Updatebatchsize,我的问题是从LSTM获取所有隐藏的输出,并将它们用作单个密集层的训练示例。将隐藏层的输出展平并将其提供给密集层不是我想要做的。我试过以下几件事: 我考虑了稠密层()的时间分布包装器。但是,这似乎将同一层应用于每个时间片,这不是我想要的。换句话说,Timedistributed包装器具有3D张量的输入形状(样本数、时间步数、特征数),并生成另一个相同类型的3D张量:(样本数、时间步数、特征数)。相反,我想要的是一个2D张量作为输出,它看起来像(样本数*时间步数,特征数) 在GitHub上有一个对A
A) 。model.add(LSTM(NUM_LSTM_UNITS,return_sequences=True,activation='tanh'))#
B) 。model.add(Lambda(Lambda x:x,output_shape=Lambda x:(x[0]*x[1],x[2]))
C) 。添加(密集(NUM_类,input_dim=NUM_LSTM_单位))
编辑:当我尝试使用函数式API而不是顺序模型时,我在步骤(C)中仍然会遇到相同的错误。您可以使用后端重塑,其中包括批量大小维度
def backend_reshape(x):
return backend.reshape(x, (-1, NUM_LSTM_UNITS))
model.add(Lambda(backend_reshape, output_shape=(NUM_LSTM_UNITS,)))
这太棒了。谢谢。