我正在尝试在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网络提供输入。
答案 0 :(得分:0)
可以通过多种方式确定网络的输入和输出形状。但是解决问题的经典方法是使用所谓的bag of words。这个想法是这样的:您构建系统的词汇或语料库,以表示输入中我遇到的所有单词。
1。输入数据维与语料库相同。
使用此模型,输入数据非常大,并且包含很多0。这称为sparse data。给定训练所有参数所需的体系结构大小,这需要大量时间和计算量。为了克服这一限制,可以在网络内部使用嵌入层,以减少尺寸。
2。输入数据仅包含出现的元素
每个输入数据都是使用给定语料库的单词索引来构造的。唯一的问题是如何预先知道一个单词有多少个。好吧,即使输入大小是随机的,输入形状也应考虑网络可以作为输入的最大大小。并且如果输入大小小于应有的大小,则可以通过添加0来增加其大小。
对输出也使用相同的推理