AttributeError: module ‘tensorflow.keras.utils‘ has no attribute image_dataset_from_directory——解决方法

在树莓派中,为python3.7搭建好tensorflow2.4(搭建的简要过程)的环境之后,跑代码时出现如题的问题
首先,利用:

import tensorflow as tf
print(tf.keras.utils.__file__)

来查找tf.keras.utils模块的__init__.py文件的路径:
在这里插入图片描述

然后,打开此tensorflow/keras/utils/__init__.py文件,发现tensorflow.keras.utils中的函数和类都是从tensorflow.python.keras中import过来的,之后与windows下tensorflow 2.7的__init__.py进行对比。

windows的__init__.py文件如下:
在这里插入图片描述
在树莓派上按照:

from tensorflow.python.keras.preprocessing.image_dataset import image_dataset_from_directory

的路径找到了image_dataset_from_directory:

在这里插入图片描述
说明树莓派的tf是有这个函数的,只是tensorflow/keras/utils/__init__.py文件没有import这个函数,所以在运行时没有在__init__.py文件中找到此函数而报错。

可以看到,tensorflow/keras/utils/__init__.py文件是自动生成的,不一定完整:

在这里插入图片描述
所以在其中添加上对image_dataset_from_directory函数的引用即可

之后在测试代码中添加:

from tensorflow.python.keras.preprocessing.image_dataset import image_dataset_from_directory

或者,直接在tensorflow/keras/utils/__init__.py文件中添加上:

from tensorflow.python.keras.preprocessing.image_dataset import image_dataset_from_directory

之后,就可以在代码中正常使用tf.keras.utils.image_dataset_from_directory


注:类似的问题经过这种查看源代码的方法也许也能得到解决。
比如,相同版本的tensorflow的tf.lite的下一级有funcA这个函数,但是在新环境中出现了AttributeError,那可以先:

import tensorflow as tf
print(tf.lite.__file__)

看一下tf.lite的__init__.py文件的路径:
在这里插入图片描述
然后类似上述方法,与能正常引用funcA函数的tensorflow的__init__.py进行对比,在新环境的__init__.py文件中添加上funcA函数相关的引用就可以了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值