机器学习PAI 序列最大长度为25,为什么训练过程中会出现21的序列呢,是有什么配置没配吗?[阿里云机器学习PAI]

问题1:机器学习PAI 序列最大长度为25,为什么训练过程中会出现21的序列呢,是有什么配置没配吗?tensorflow.python.framework.errors_impl.InvalidArgumentError: From /job:chief/replica:0/task:0:
All dimensions except 2 must match. Input 1 has shape [512 21 8] and doesn’t match input 0 with shape [512 25 8].
[[node gradients/concat_3_grad/ConcatOffset (defined at /worker/venv/lib/python3.6/site-packages/tensorflow_core/python/framework/ops.py:1748) ]]
问题2:离线是需要把所有序列都填充到25的长度吗?还说一个配置就行?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 问题1:机器学习 PAI 中的序列最大长度为25是通过配置进行设定的。在你的训练过程中,出现了序列长度为21的错误,这可能是由于模型输入数据的不一致导致的。具体而言,错误信息显示输入 0 的形状为 [512, 25, 8],而输入 1 的形状为 [512, 21, 8],它们的第二个维度长度不匹配。

    这可能是由于在构建模型时,在某些地方使用了预定义的序列长度(25),但实际训练数据中的某些序列长度不符合该预定义长度。你可以检查以下几个方面:

    • 确保训练数据的序列长度都小于等于25。如果有超过25的序列存在,需要对其进行处理,例如截断或填充到指定长度。
    • 检查训练数据输入管道的配置,确保正确地读取和处理序列数据。
    • 确认模型中相关的张量维度设置与数据输入的一致性。

    问题2:离线训练时,是否需要将所有序列填充到长度为25取决于你的任务和模型设计。在某些情况下,填充序列以使其具有相同的长度是必要的,特别是当你的模型对输入序列长度敏感时。这样做的好处是确保模型能够处理统一长度的序列。

    然而,对于某些任务和模型,你可以通过适当的配置来支持可变长度的序列。例如,使用循环神经网络(RNN)时,你可以在序列输入中指定 None 作为长度,以接受不同长度的序列。

    因此,在离线训练中,是根据具体需求来决定是否需要将所有序列填充到固定长度。如果你的模型需要固定长度的序列输入,那么填充序列到长度为25是必要的;如果模型支持可变长度的序列输入,那么只需要相应的配置即可。

  2. 回答1:序列的组内要等长。如果是 21 的话要求组内所有的序列长度都是 21。现在看来是组内不等长
    回答2:不用填充。等长就可以。你一个 click 序列的话,肯定是等长的。如果是不同的序列,比如 click 序列 和 点赞序列,那就放在两个 group 里面就可以。,此回答整理自钉群“【EasyRec】推荐算法交流群”