node.js - 在 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 网络提供输入。
解决方案
网络的输入和输出形状可以通过多种方式确定。但解决问题的经典方法是使用所谓的词袋。想法如下:您构建系统的词汇表或语料库,代表我在您的输入中遇到的所有单词。
1.输入数据维度与语料相同。
使用这个模型,输入数据非常大,包含很多 0。这称为稀疏数据。考虑到训练所有参数所需的架构规模,它需要大量时间和计算。为了抵消这一限制,人们可能会在网络内部使用嵌入层以减少维数。
2.输入数据只包含出现的元素
每个输入数据都是使用给定语料库的单词索引构造的。唯一的问题是如何提前知道一个人会说多少个单词。好吧,即使输入大小是随机的,输入形状也应该考虑到网络可以作为输入的最大大小。如果输入大小小于应有的大小,则可以通过添加 0 来增加其大小。
同样的推理也适用于输出
推荐阅读
- reactjs - 如何将路由道具传递到我的功能组件中
- python - 比较 Pandas Dataframe 的匹配行和列的差异
- c++ - gRPC auth_context.h 使用 std::iterator 使用最新的 VC++ 编译器产生不推荐使用的警告
- z3 - Z3中的多元减法
- c# - 必须声明表变量“@TempTable”
- java - 将 null 函数作为参数传递给 java 函数
- android - 初学者 - Android Studio 中的 RelativeLayout 无法按预期工作
- javascript - 从给定数组中找到一对元素,其总和等于 JavaScript 中的特定目标数
- excel - 根据 Excel 表格中的两个值检索值
- python - 打乱数据行时 100% 的分类器准确度