使用LSTM进行回归总会导致Keras

时间:2016-11-15 15:06:41

标签: neural-network keras

我正在尝试为自然语言处理问题创建LSTM网络。作为学习的玩具示例,我试图从Facebook消息内容预测喜欢的数量,因此回归(预测数字)而不是分类。

输入数据由24000个项目组成,每个项目如下所示:

[[361], [587], [26], [1], [3], [2], [1], [918], ..., [0], [0], [0]]

每个数字对应一个不同的单词,短消息用零填充。我认为NLP是一种非常标准的方法。

目标是24000个数字,每个数字对应于相应消息的喜欢数量:

[3847, 1094, 633, 969, 4374, 1583, 350, 647, 22, 9, 886, 109, 629, 782, 831, ...]

我正在编写一个试图适应这种情况的LSTM网络:

model = keras.models.Sequential()

model.add(keras.layers.LSTM(MSG_LEN, return_sequences=True, batch_input_shape=(50, MSG_LEN, 1), activation='tanh'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.LSTM(int(MSG_LEN / 2), return_sequences=False, batch_input_shape=(50, MSG_LEN, 1), activation='tanh'))
model.add(keras.layers.Dropout(0.2))
model.add(keras.layers.Dense(1, activation='tanh'))

model.compile(optimizer='adam',
              loss='mse')

model.fit(data['training_set']['data'], data['training_set']['target'],
          verbose=1,
          validation_data=(data['test_set']['data'],
                           data['test_set']['target']),
          nb_epoch=10,
          batch_size=50)

predicted = model.predict(data['test_set']['data'],
                                batch_size=50)

现在预测应该包含一个数字数组,每个数字都预测相应的test_set消息。

预测看起来像这样:

[[ 0.99999225], [ 0.99999231], [ 0.99999225], [ 0.99999225], [ 0.99999225], [ 0.99999225], [ 0.99999225],  ...]

现在,我不希望得到真正有用的结果。预测Facebook喜欢可能不是一个好主意,但考虑到测试目标是从0到100000的整数,我预计预测的数据也会在相似的范围内。

有什么明显的错误吗?这是否过度拟合?我错过了一些基本的东西吗?

0 个答案:

没有答案