【问题标题】:Using Keras for predicting next word使用 Keras 预测下一个单词
【发布时间】:2019-06-04 19:33:15
【问题描述】:

我有一个序列预测问题,我将其作为语言模型来处理。 我的数据包含 4 个选择 (1-4) 和一个奖励 (1-100) 。 我开始使用 Keras,但我不确定它是否具有我需要的灵活性。

  1. 这是模型架构的外观:

我不确定测试阶段。一种选择是抽样:

而且我不确定如何评估这个选项的输出与我的测试集。

另一种选择是给训练好的模型一个序列,让它绘制最后一个时间步长值(比如给出一个句子并预测最后一个单词)——但仍然有 x = t_hat。

在 Keras 有可能吗?我找不到这样的例子。

  1. 除了传递上一个选择(或上一个词)作为输入之外,我还需要传递第二个特征,即奖励值。选择是 one-hot 编码的,如何将单个数字与编码向量相加?

编辑: 这是训练阶段(尚未完成采样):

model = Sequential()
model.add(LSTM(64, input_shape=(seq_length, X_train.shape[2]) , return_sequences=True))
model.add(Dense(y_cat_train.shape[2], activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_cat_train, epochs=100, batch_size=10, verbose=2)

【问题讨论】:

  • 你必须明确确认你的系统是不是LSTM,你的LSTM是什么类型,里面使用了哪些参数/超参数。
  • 感谢@M.F 现在看起来好多了。

标签: keras neural-network deep-learning nlp lstm


【解决方案1】:

Google 设计 Keras 来支持各种需求,它应该满足您的需求 - 是的。

在您的情况下,您使用的是任意数量的单元(通常为 64 或 128)的 LSTM 单元,其中:a、a , a... a 作为隐藏参数。注意:你的最后一个索引不应该是 3,而是应该是 Ty。

我建议检查https://keras.io/utils/#to_categorical 函数将您的数据转换为“one-hot”编码格式。

【讨论】:

  • 我使用 to_catagorical 作为我的真实标签(又名 y) - 但不是在它们作为输入插入时(例如,当 X<t> == y<t-1> 时)。我也应该在输入中使用编码吗?如果我需要传递 2 个特征,一个是真正分类的(1-4 个值),另一个是离散的(1-98 个值),我应该对它们都进行编码吗?如果只有一个被编码,我不能和另一个一起传递它
  • 是的,输入和输出都需要转换为 OH 表示法。
  • 我的意思是我也应该对数字特征进行编码吗?还是应该将其连接到分类特征的 one-hot 向量?
  • 把数值转成分类数值会不会失去意义?
  • @M.F 问另一个问题,不要混淆这个问题,但通常你编码和解码的东西。
猜你喜欢
  • 2018-10-23
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2018-01-16
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多