python - Seq2Seq 是否适合我的数据?
问题描述
我正在尝试训练一个模型来预测网页的设计模式。我正在使用给定一堆元素分组的边界矩形坐标。模式如下所示:
[[elementId, width, height, x, y]]
所以我的目标是[[x,y]]
给定的[[elementId, width, height]]
。
具体来说:
[[5, 1.0, 1.0], [4, 1.0, 1.0], [2, 175.0, 65.0], [2, 1.0, 1.0], [4, 1.0, 1.0]]
->
[[0.0, 0.0], [0.0, 10.0], [3.0, 0.0], [0.0, 68.0], [0.0, 10.0]]
[[2, 14.0, 14.0], [2, 14.0, 14.0], [2, 14.0, 14.0]]
->
[[0.0, 3.0], [0.0, 3.0], [0.0, 3.0]]
图案大小不一,所以我用[[0,0,0]]
. 我目前有大约 15k 个,但可以得到更多。
有人告诉我,seq2seq with attention 是这项工作的正确模型。我从https://machinelearningmastery.com/develop-encoder-decoder-model-sequence-sequence-prediction-keras/开始并取得了可怕的结果。
我可以找到的每个 seq2seq 示例(搜索 keras 或 pytorch)都用于分类翻译,我正在努力寻找一个好的基于回归的示例。
所以我的问题是:
1)这是我想要做的正确模型(编码器/解码器LSTM)吗?
2)如果有的话,有什么例子吗?
提前非常感谢。我不希望任何人解决我的问题,但任何帮助将不胜感激!
解决方案
当输入/输出是可变长度时使用 Seq2Seq/LSTM。
您的输入大小为 3,输出大小为 2(至少对于给定的示例)。因此,您可以使用具有 L2/L1 损失(用于回归)的简单一/二隐藏层前馈模型。任何选择(SGD/Adam)都应该没问题,但是,Adam 在实践中运行良好。
另外,我认为您不应该按原样使用坐标,您可以对其进行缩放以使最高坐标为 1,因此输入/输出范围将介于 0 和 1 之间。另外一个优点是,这将帮助您推广到不同的屏幕尺寸直观。
推荐阅读
- android - ChildHelper.java 第 352 和 355 行崩溃
- python - 为什么这些守护线程不会被杀死?
- regex - MariaDB longtext REGEXP_REPLACE() - 替换单元格中给定参数变量值的所有出现
- r - 如何根据另一列字符串提取部分字符串?
- java - Selenium WebDriver (JAVA) - 流畅的等待似乎不起作用
- javascript - 硬绑定与调用
- regex - 正则表达式匹配模式之间的内容与相同模式Python环境中的条件
- bash - How would i get a process pid which is running in a bash script and know when its done
- linkedin - 如何成为领英认可的开发者使用领英的 Connections API?
- typescript - Match "any" but not array