在tensorflow.js中确定LSTM网络的输入形状

时间:2018-10-02 14:45:39

标签: node.js lstm tensorflow.js

我正在尝试在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"
}

];

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

我被困的下一部分无法确定LSTM网络的输入和输出形状。如果我可以从模型中获得向量输出,我想我可以从该向量中提取字符串。

如果我具有可变长度的输入和输出,那么有人可以指导我为LSTM网络提供输入。

1 个答案:

答案 0 :(得分:0)

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

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

使用此模型,输入数据非常大,并且包含很多0。这称为sparse data。给定训练所有参数所需的体系结构大小,这需要大量时间和计算量。为了克服这一限制,可以在网络内部使用嵌入层,以减少尺寸。

2。输入数据仅包含出现的元素

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

对输出也使用相同的推理