【问题标题】:Determine the input shape for an LSTM network in tensorflow.js在 tensorflow.js 中确定 LSTM 网络的输入形状
【发布时间】:2018-10-14 19:35:44
【问题描述】:

我正在尝试在 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.js lstm tensorflow.js


【解决方案1】:

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

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

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

2。输入数据只包含发生的元素

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

同样的推理也适用于输出

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    相关资源
    最近更新 更多