使用Keras预测下一个单词

使用Keras预测下一个单词,keras,neural-network,deep-learning,nlp,lstm,Keras,Neural Network,Deep Learning,Nlp,Lstm,我有一个序列预测问题,我把它作为一个语言模型来处理。 我的数据包含4个选择(1-4)和一个奖励(1-100)。 我开始使用Keras,但我不确定它是否有我需要的灵活性 这是模型架构的外观: 我不确定测试阶段。一种选择是抽样: 我不知道如何评估这个选项相对于我的测试集的输出 另一种选择是给训练过的模型一个序列,让它绘制最后一个时间步长值(比如给出一个句子并预测最后一个单词),但仍然有x=t_ 在凯拉斯有可能吗?我找不到这样的例子 除了传递上一个选项(或上一个单词)作为输入之外,我还需要传递第二

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

  • 这是模型架构的外观:
  • 我不确定测试阶段。一种选择是抽样:

    我不知道如何评估这个选项相对于我的测试集的输出

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

    在凯拉斯有可能吗?我找不到这样的例子

  • 除了传递上一个选项(或上一个单词)作为输入之外,我还需要传递第二个特性,这是一个奖励值。选择是一个热编码,如何将单个数字与编码向量相加
  • 编辑: 这是培训阶段(尚未完成采样):


    谷歌设计的Keras可以支持所有类型的需求,它应该适合你的需求——是的

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


    我建议检查函数,将您的数据转换为“一个热”编码格式。

    我使用
    to_catogorical
    ,用于我的真实标签(aka
    y
    )-但不是当它们作为输入插入时(例如
    X==y
    )。我应该在输入中也使用编码吗?如果我需要传递两个特性,一个是真正的分类特性(1-4个值),另一个是离散特性(1-98个值)——我应该同时对它们进行编码吗?如果只对其中一个进行编码,我不能将其与另一个一起传递是的,输入和输出都需要转换为OH表示法。我的意思是我应该对数字特征也进行编码吗?或者我应该把它连接到分类特征的一个热向量上吗?当我把它转换成分类特征时,我不会失去数值的意义吗?@M.F问另一个问题,不要混淆这个问题,但通常你会对事物进行编码和解码。你必须明确确认你的系统是否是LSTM,你在里面使用什么样的LSTM和什么参数/超参数。谢谢@M.F,现在看起来好多了。
    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)