首页 > 解决方案 > Keras LSTM 模型获取标签的概率

问题描述

我创建了一个 keras LSTM 模型来预测给定句子的下一个单词:

pretrained_weights = w2v_model.wv.syn0
vocab_size, emdedding_size = pretrained_weights.shape

lstm_model = Sequential()
lstm_model.add(Embedding(input_dim= vocab_size, output_dim=emdedding_size, weights=[pretrained_weights]))
lstm_model.add(LSTM(units=emdedding_size))
lstm_model.add(Dense(units=vocab_size))
lstm_model.add(Activation('softmax'))
lstm_model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')

lstm_model.fit(X, y, batch_size=128, epochs=3)

当 X 是句子并且 y 是每个句子的下一个单词时。现在,我有一个句子和 5 个单词,我想根据给定句子的概率对它们进行排名。最好的方法是什么?

标签: pythonkerasnlpdeep-learninglstm

解决方案


将 LSTM 输出层的激活函数更改为“sigmoid”,它将起作用。

pretrained_weights = w2v_model.wv.syn0
vocab_size, emdedding_size = pretrained_weights.shape

lstm_model = Sequential()
lstm_model.add(Embedding(input_dim= vocab_size, output_dim=emdedding_size, weights=[pretrained_weights]))
lstm_model.add(LSTM(units=emdedding_size))
lstm_model.add(Dense(units=vocab_size))
lstm_model.add(Activation('sigmoid'))
lstm_model.compile(optimizer='adam', loss='mean_squared_error')

lstm_model.fit(X, y, batch_size=128, epochs=3)

推荐阅读