首页 > 解决方案 > 在 tensorflow.js 中确定 LSTM 网络的输入形状

问题描述

我正在尝试在 tensorflow.js 中构建和训练 LSTM 网络,

我的数据集就像

dataSet = [
 {
    phrase: "i am returning this product because it is too yellow for me",
    output: "color"
},
{
    phrase: "i am shipping back product because it is broken when i received it",
    output: "broken"
},
{
    phrase: "not satisfied because handle broke after using for three days",
    output: "quality issue"
}

];

我可以使用谷歌的 wordtovec 预训练模型将每个单词变成 300 维向量(长度为 300 的简单数组),

我被卡住的下一部分是,无法确定 LSTM 网络的输入和输出形状。如果我能从模型中得到一个向量输出,我想我可以用那个向量制作字符串。

如果我有可变长度的输入和输出,任何人都可以指导我向 LSTM 网络提供输入。

标签: node.jslstmtensorflow.js

解决方案


网络的输入和输出形状可以通过多种方式确定。但解决问题的经典方法是使用所谓的词袋。想法如下:您构建系统的词汇表或语料库,代表我在您的输入中遇到的所有单词。

1.输入数据维度与语料相同。

使用这个模型,输入数据非常大,包含很多 0。这称为稀疏数据。考虑到训练所有参数所需的架构规模,它需要大量时间和计算。为了抵消这一限制,人们可能会在网络内部使用嵌入层以减少维数。

2.输入数据只包含出现的元素

每个输入数据都是使用给定语料库的单词索引构造的。唯一的问题是如何提前知道一个人会说多少个单词。好吧,即使输入大小是随机的,输入形状也应该考虑到网络可以作为输入的最大大小。如果输入大小小于应有的大小,则可以通过添加 0 来增加其大小。

同样的推理也适用于输出


推荐阅读