首页 > 其他 > 详细

关于AttributeError: module 'tensorflow' has no attribute '**'报错问题的解决,以GradientTape为例

时间:2021-03-13 15:40:29      阅读:298      评论:0      收藏:0      [点我收藏+]

  作为一个刚入TF的小白,经常碰到很多报错关于AttributeError: module ‘tensorflow‘ has no attribute ‘**‘等,百度上搜出来好多答案都是升级,或者重装TF,我就想说这辈子都不想再重装环境了。所以就仔细研究了下,记录一下。

【环境版本】:TF:1.7

       PY:3.5.3

【问题复现】:在调用 tf.GradientTape() 时在tf下没有显示GradientTape的类,报错如图:
技术分享图片

 

 

 

 

 

 

【问题思考】:以我一个小白的经验,第一反应是看看这个类的声明在哪,结果发现go to不到,上网搜了下这个类的定义发现是在下面目录下的backprop.py里,我也确实在本地文件里找到了定义,但为什么会找不到,可能是路径设置有问题?

技术分享图片

  tensorflow-gpu是我本地在用的环境名称

技术分享图片

 

 

【解决办法】:

  于是我把定义类的路径引入到调用的函数,如图:

技术分享图片

 

  然后在调用的地方改了下,直接引用发现编译器没有报错,运行也可以解决,其他类似的问题应该按照这个思路都能解决

技术分享图片

 

【思考】:

  以后如果还是要调用,每次都要重新设置路径比较麻烦,于是思考能不能可以直接通过tf直接访问呢?于是我找到eager的上一级目录python下的__init__文件,看看是不是没有导入eager\backprop的GradientTape类,发现确实没有,于是我仿照eager.context导入executing_eagerly的方式,在全页搜索了下executing_eagerly的用法有两个地方,照猫画虎加上了GradientTape。

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

   然后回到调用的地方,去掉了

技术分享图片

然后在调用时发现tf.下可以索引到GradientTape,于是恢复了之前的调用方法,完美运行,问题解决。这次是类的地址设置问题,还有可能是库的地址设置,思路是一样的,不过是要先在tensorflow文件内找找有没有这个库,再进行地址设置的修改。

 

技术分享图片

 

 

 

  

 

关于AttributeError: module 'tensorflow' has no attribute '**'报错问题的解决,以GradientTape为例

原文:https://www.cnblogs.com/chulan-lxc/p/14528507.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!