机器学习PAI跑deepfm时有shape mismatch的问题,可以问下怎么解决吗?[阿里云机器学习PAI]

机器学习PAI跑deepfm时有shape mismatch的问题,可以问下怎么解决吗?File “/Users/brandonnnn/miniconda3/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py”, line 153, in error_handler
raise e.with_traceback(filtered_tb) from None
File “/Users/brandonnnn/miniconda3/lib/python3.10/site-packages/tensorflow/python/framework/ops.py”, line 1751, in _create_c_op
raise ValueError(e.message)
ValueError: Dimension 1 in both shapes must be equal, but are 16 and 32. Shapes are [?,16] and [?,32].
From merging shape 6 with other shapes. for ‘{{node fm_feature/stack}} = PackN=8, T=DT_FLOAT, axis=1′ with input shapes: [?,16], [?,16], [?,16], [?,16], [?,16], [?,16], [?,16], [?,32].

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 这个错误是一个形状不匹配的问题,它通常出现在代码中尝试对不兼容的张量进行操作时。要解决这个问题,你可以考虑以下几个步骤:

    1. 检查输入数据的形状:首先,检查你的输入数据的形状是否正确。确保输入数据的维度和大小与模型的期望输入一致。特别注意报错中提到的 [?,16][?,32] 这两个形状,需要确保它们在相应的位置上匹配。

    2. 检查模型定义和参数设置:确保你的模型定义和参数设置与输入数据的形状相匹配。对于 DeepFM 模型,可能涉及到特征抽取、嵌入层、FM 层和 DNN 层等部分。特别注意其中的权重矩阵或张量的形状是否与输入数据的形状兼容。

    3. 检查特征处理和输入编码:DeepFM 模型通常会对输入特征进行预处理和编码,例如使用嵌入层将类别特征转换为连续向量表示。确保这些特征处理和编码的过程中,形状变化没有引入不匹配的问题。

    4. 确认数据格式和排列顺序:确保输入数据的格式和排列顺序与模型的要求一致。有时候,形状不匹配的问题可能是由于数据格式或排列顺序不正确导致的。

    5. 检查损失函数和优化器设置:确保你选择的损失函数和优化器与模型的结构和任务相适应,并且可以处理输入数据的形状。

    通过以上步骤,应该能够帮助你解决形状不匹配的问题。如果问题仍然存在,请提供更多的代码细节、模型定义和输入数据的形状信息,以便我可以提供更具体的帮助。

  2. 你看下这里,这个bug已经修复了,review完就会发布,此回答整理自钉群“【EasyRec】推荐算法交流群”