Tenflow bug(一)——tensorflow.python.framework.errors_impl.InvalidArgumentError

10 篇文章 1 订阅
9 篇文章 0 订阅

问题描述:

      在做resnet101分类时,在原本resnet50做数字分类的基础上,改成了采用别的预训练集训练自己的数据,在训练完生成.pd文件时,出现如下问题:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [10] rhs shape= [12]

还有一种形式:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [2048,10] rhs shape= [2048,12]
     [[{{node save/Assign_1}} = Assign[T=DT_FLOAT, _class=["loc:@Predict/weights"], use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](Predict/weights, save/RestoreV2/_3)]]
     [[{{node save/RestoreV2/_1082}} = _Send[T=DT_FLOAT, client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_1087_save/RestoreV2", _device="/job:localhost/replica:0/task:0/device:CPU:0"](save/RestoreV2:541)]]

解决办法:

    通过查阅资料发现,tensorflow.python.framework.errors_impl.InvalidArgumentError故障大部分是参数问题。比如这个问题我自己看我的代码模型没有毛病,后来发现自己在导入一个模型的时候,忘了修改模型参数与自己train时候用到的参数匹配。

                                        

                                        
     train时候用的模型有10个输出,原先用于另一个数据集的模型有12个输出,在修改后将原本生成的.ckpt文件删掉,重新训练,再导出就可以了。 概括地讲,你在restore的时候必须保证当先代码构建的模型与原模型参数匹配,如果不匹配则会报错。当然这个问题尤其在你有多个载入模块的时候,需要仔细校验每一个载入模块的参数类型,数目是否与原来train时候的参数数目匹配。
    唯有如此,才能使自己的模型得到验证工作。

    在修改网络的优化方法时,也要注意模型的参数匹配,否则也会出现这个错误。例子如下:

https://blog.csdn.net/check2255/article/details/78321818


参考:

https://blog.csdn.net/qq_41185868/article/details/79994791 
 

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值