我通过子类的方法构建模型,在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,hw,c])更改成了tf.reshape(x,[-1,h*w,c])也就是让其自动推断出batchsize大小。这样一来可以顺利保存模型。但是这样一来,在训练的途中会出现莫名的错误,有时候是concat的时候提示形状不一样,提示batchsize纬度不同。
规范的使用方法应该是什么呢?
tf2中tf.reshape的使用问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 不知道你这个问题是否已经解决, 如果还没有解决的话:- 以下回答来自chatgpt:
根据问题描述,使用
tf.reshape
操作时遇到了保存模型时的异常以及训练过程中的错误。根据参考资料中的代码示例,可以看出tf.reshape
的使用方法是正确的。因此,可能出现问题的地方可能是其他地方代码的问题。首先,我们需要确认输入张量
x
的形状是否与模型构建时的输入形状一致。如果输入形状不一致,那么产生的错误可能与tf.reshape
无关。接下来,我们可以查看训练过程中出错的地方。按照问题描述,有时是
concat
操作时形状不一致,有时是批量大小(batch_size)维度不同。这些错误提示可能是由于在批处理样本时,样本的形状不一致导致的。因此,我们需要检查数据集是否有错误,确保所有样本的形状是一致的。如果确认输入形状和数据集都是正确的,那么问题很可能出现在模型的其他部分。我们需要仔细检查模型的其他操作,例如
concat
操作和其他自定义的操作,以确保它们正确处理输入的形状。总之,根据给出的参考资料和问题描述,我无法确定问题的具体原因,也无法给出具体的解决方案。因此,我建议先检查输入形状和数据集是否正确,然后仔细检查模型的其他操作。如果问题仍然存在,可能需要更多的信息才能解决该问题。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决评论 打赏 举报无用 1- 以下回答来自chatgpt:
悬赏问题
- ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
- ¥15 这种微信登录授权 谁可以做啊
- ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
- ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
- ¥15 网络设备配置与管理这个该怎么弄
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!