用概率标签训练LSTM



我目前正在进行一个项目,例如10个用户将文本分为两类。我正试图使用distribution作为训练LSTM的标签,例如,如果10个用户中有8个投票支持"是",则标签为0.8。

我现在使用的是以下型号:

lstm = Sequential()
lstm.add(Embedding(number_unique_words, vector_size, weights=[embedding_matrix], input_length=max_len, trainable=False))
lstm.add(LSTM(64))
lstm.add(Dense(64, activation='sigmoid'))
lstm.add(Dense(1, activation='sigmoid'))
lstm.compile(loss='mse',
optimizer="adam",
metrics=['acc'])
results = lstm.fit(x, 
y, 
batch_size=128, 
epochs=5, 
validation_split=0.4, 
shuffle=True)

embedding_matrix是由500维word2vec模型创建的,该模型由标记器创建。那么,模型的输入就是一个标记化的注释。

我已经尝试过改变LSTM和隐藏层的大小和数量,使用了不同的优化器和lrs、batch_size、历元和激活/丢失函数。问题是acc总是停留在50%左右,并且该模型预测所有测试用例的恒定值。

有人知道这不起作用吗?用概率标签训练LSTM是不是根本不可能?

解决了我的问题。我一直在以"post"的方式填充我的标记化评论,所以我添加了0以使它们达到固定的长度。在注释中加上0s("pre"(完全改变了结果。LSTM在这方面做得更好!

为了进一步检查读数https://keras.io/preprocessing/sequence/pad_sequences和padding 下

最新更新