我尝试使用Keras来识别英语单词中的常见模式。目前,我只是把整个词放在神经网络中。这很糟糕,因为只有长字会在最后使用神经元。
有没有办法根据针对多个数据的运行进行预测?
我想做的是
word = "check"
scores = []
for segment in binify(word, binsize=4):
# we get " che", "chec", "heck", "eck "
scores.append(model.predict(segment))
final_classification = mean(scores)
我希望能够使用上述功能训练神经网络(网络一次需要4个字符)。怎么做到最好?自定义优化器?
答案 0 :(得分:1)
有没有办法根据针对多个数据的运行进行预测?
为什么不以您需要的方式预处理数据?即将其拆分为存储桶并为数据提供网络?实际上,正如您在算法中描述的那样。我认为没有必要,神经网络执行这一步骤。 如果你想要一个专注于单词部分的神经网络,那么卷积神经网络就是你的选择。但我认为CNN不会帮助你完成任务。
因为如果我说得对,你试图建立一种自动完成(但是自动完成器会在输入词的两端完成你的输入吗?)所以输入的标签" che"是"检查",对吧?基本问题是例如"赫克"可以映射到检查,检查点,哎呀,签到....所以从输入到标签从来没有明显的区别。
我建议使用字符嵌入作为输入,因为它们模拟了字符的相似性。作为一种天真的方法,您也可以使用单热编码字符。 在隐藏图层中获得一些乐趣 - 您可以先使用简单的完全连接的Dense图层,也可以尝试使用LSTM。 作为标签,您可以使用word2vec字嵌入。因此,作为输出层,您需要300个神经元(word2vec的维度为300)。因为它不再是一个热编码 - 你不应该使用交叉熵损失,而不是方形损失或类似的东西。
Word2vec已经提供了开箱即用的工具,用于将给定的矢量与相似的单词进行比较。这就是你如何得到你预测的词。