问题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的长度吗?还说一个配置就行?
问题1:机器学习 PAI 中的序列最大长度为25是通过配置进行设定的。在你的训练过程中,出现了序列长度为21的错误,这可能是由于模型输入数据的不一致导致的。具体而言,错误信息显示输入 0 的形状为 [512, 25, 8],而输入 1 的形状为 [512, 21, 8],它们的第二个维度长度不匹配。
这可能是由于在构建模型时,在某些地方使用了预定义的序列长度(25),但实际训练数据中的某些序列长度不符合该预定义长度。你可以检查以下几个方面:
问题2:离线训练时,是否需要将所有序列填充到长度为25取决于你的任务和模型设计。在某些情况下,填充序列以使其具有相同的长度是必要的,特别是当你的模型对输入序列长度敏感时。这样做的好处是确保模型能够处理统一长度的序列。
然而,对于某些任务和模型,你可以通过适当的配置来支持可变长度的序列。例如,使用循环神经网络(RNN)时,你可以在序列输入中指定 None
作为长度,以接受不同长度的序列。
因此,在离线训练中,是根据具体需求来决定是否需要将所有序列填充到固定长度。如果你的模型需要固定长度的序列输入,那么填充序列到长度为25是必要的;如果模型支持可变长度的序列输入,那么只需要相应的配置即可。
回答1:序列的组内要等长。如果是 21 的话要求组内所有的序列长度都是 21。现在看来是组内不等长
回答2:不用填充。等长就可以。你一个 click 序列的话,肯定是等长的。如果是不同的序列,比如 click 序列 和 点赞序列,那就放在两个 group 里面就可以。,此回答整理自钉群“【EasyRec】推荐算法交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。