Machine learning 当LSTM返回keras中的序列时,如何执行softmax?

Machine learning 当LSTM返回keras中的序列时,如何执行softmax?,machine-learning,keras,Machine Learning,Keras,我正在尝试建立一个序列到序列的编码器-解码器模型,需要softmax最后一层来使用分类交叉熵 我尝试将最后一个LSTM层的激活设置为“softmax”,但这似乎不起作用。添加另一个致密层并将激活设置为softmax也没有帮助。当最后一个LSTM输出序列时,执行softmax的正确方法是什么 inputs = Input(batch_shape=(batch_size, timesteps, input_dim), name='hella') encoded = LSTM(latent_dim,

我正在尝试建立一个序列到序列的编码器-解码器模型,需要softmax最后一层来使用分类交叉熵

我尝试将最后一个LSTM层的激活设置为“softmax”,但这似乎不起作用。添加另一个致密层并将激活设置为softmax也没有帮助。当最后一个LSTM输出序列时,执行softmax的正确方法是什么

inputs = Input(batch_shape=(batch_size, timesteps, input_dim), name='hella')
encoded = LSTM(latent_dim, return_sequences=True, stateful=False)(inputs)
encoded = LSTM(latent_dim, return_sequences=True, stateful=False)(encoded)
encoded = LSTM(latent_dim, return_sequences=True, stateful=False)(encoded)
encoded = LSTM(latent_dim, return_sequences=False)(encoded)
decoded = RepeatVector(timesteps)(encoded)
decoded = LSTM(input_dim, return_sequences=True)(decoded)
# do softmax here
sequence_autoencoder = Model(inputs, decoded)

sequence_autoencoder.compile(loss='categorical_crossentropy', optimizer='adam')
我想出来了:

对于Keras 2,您只需添加:

TimeDistributed(Dense(input_dim, activation='softmax'))
TimeDistributed允许在每个时间步长上应用密集层。文档可在此处找到: