首页 > 解决方案 > 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)如果有的话,有什么例子吗?

提前非常感谢。我不希望任何人解决我的问题,但任何帮助将不胜感激!

标签: pythonmachine-learningkerasdata-sciencepytorch

解决方案


当输入/输出是可变长度时使用 Seq2Seq/LSTM。

您的输入大小为 3,输出大小为 2(至少对于给定的示例)。因此,您可以使用具有 L2/L1 损失(用于回归)的简单一/二隐藏层前馈模型。任何选择(SGD/Adam)都应该没问题,但是,Adam 在实践中运行良好。

另外,我认为您不应该按原样使用坐标,您可以对其进行缩放以使最高坐标为 1,因此输入/输出范围将介于 0 和 1 之间。另外一个优点是,这将帮助您推广到不同的屏幕尺寸直观。


推荐阅读