太空的旅行者 2023-07-20 22:42 采纳率: 28.6%
浏览 6
已结题

tf2中tf.reshape的使用问题

我通过子类的方法构建模型,在call方法中用到了reshape,我的做法是对于call方法传进来的inputs参数,我通过inputs.shape获取了形状:b,h,w,c。然后后面reshape的时候是进行了tf.reshape(x,[b,hw,c])的操作。前向反向传播都没有任何问题。但是调用save_model保存模型的时候提示我reshape这一行出现了异常,提示[None, 20480, 48]的None的list不能转换为tensor。
并且采用model.fit也会这样提示。正如您所说,创建动态图是形状还没有确定。于是我更改了reshape的使用方法,将tf.reshape(x,[b,h
w,c])更改成了tf.reshape(x,[-1,h*w,c])也就是让其自动推断出batchsize大小。这样一来可以顺利保存模型。但是这样一来,在训练的途中会出现莫名的错误,有时候是concat的时候提示形状不一样,提示batchsize纬度不同。
规范的使用方法应该是什么呢?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-21 08:29
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      根据问题描述,使用tf.reshape操作时遇到了保存模型时的异常以及训练过程中的错误。根据参考资料中的代码示例,可以看出tf.reshape的使用方法是正确的。因此,可能出现问题的地方可能是其他地方代码的问题。

      首先,我们需要确认输入张量x的形状是否与模型构建时的输入形状一致。如果输入形状不一致,那么产生的错误可能与tf.reshape无关。

      接下来,我们可以查看训练过程中出错的地方。按照问题描述,有时是concat操作时形状不一致,有时是批量大小(batch_size)维度不同。这些错误提示可能是由于在批处理样本时,样本的形状不一致导致的。因此,我们需要检查数据集是否有错误,确保所有样本的形状是一致的。

      如果确认输入形状和数据集都是正确的,那么问题很可能出现在模型的其他部分。我们需要仔细检查模型的其他操作,例如concat操作和其他自定义的操作,以确保它们正确处理输入的形状。

      总之,根据给出的参考资料和问题描述,我无法确定问题的具体原因,也无法给出具体的解决方案。因此,我建议先检查输入形状和数据集是否正确,然后仔细检查模型的其他操作。如果问题仍然存在,可能需要更多的信息才能解决该问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月24日
  • 创建了问题 7月20日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!