我正在尝试制作一个序列来对编码器解码器模型进行排序,并且需要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')
答案 0 :(得分:2)
想出来:
从Keras 2开始,您只需添加:
TimeDistributed(Dense(input_dim, activation='softmax'))
TimeDistributed允许您在每个时间步长上应用Dense图层。可以在此处找到文档:https://keras.io/layers/wrappers/