keras学习- No module named ' tensorflow.keras ' 报错,看清 tf.keras与keras

环境描述:

系统ubantu16.04

安装anaconda  版本conda 4.5.4

创建虚拟环境 tf-gpu

tensorflow-gpu版本(1.7.0-gpu, 能够import tensorflow)

tf-gpu环境下已安装的包:

  (1)conda install scipy matplotlib scikit-learn scikit-image

  (2)conda install keras

 

正文

       一直对keras和tf.keras的存在一些混淆和误区,这里说一说自己的理解。误区主要还是源于对python的package和tensorflow的不熟悉导致的,按网上例子写代码出现问题,被各种版本更是弄的晕头转向。

最初是看到这样一段代码

import numpy as np

from tensorflow.keras import layers

from tensorflow import keras

import tensorflow as tf

运行程序,第二句会报错,于是开启了问题之路:

       ModuleNotFoundError: No module named 'tensorflow.keras'

             

我的问题的解决:

1、在我的python环境(能够import tensorflow)下用下面的程序测试(所用工具为jupyter notebook网页编辑器)

                                                          

测试结果:

        

这说明tensorflow外的keras正常,可以看到其路径所在,也可以导入其下的包。

2、第二个测试,用下面的程序测试,并给出程序

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
print(tf.VERSION)
print(tf.keras.__version__)
tf.__path__
keras.__path__
tf.keras.__path__
la = tf.keras.layers.Convolution2D(32,(3,3))
from tensorflow.python.keras import layers
layers.__path__

                                                    

测试结果:

                    

                                             

       细心观察,发现,和最初代码相比,交换了顺序后,第二句是通过的(之前忽略了),其实只是第三句报错。那赶快验证一下tensorflow中keras的版本和位置,可以看到tensorflow里的keras版本号有个tf标志,再看路径,多了一个python的中间路径!于是进行后续验证,加入中间的python路径后,成功运行。

究其原因,则是我安装的tensorflow中,keras的路径是

 ~/anaconda3/envs/tf-gpu/lib/python3.6/site-packages/tensorflow/python/keras

所以正确的调用方式是

                                    from tensorflow.python.keras import layers

最后,Keras 是一个用于构建和训练深度学习模型的高级 API,最后,Keras 是一个用于构建和训练深度学习模型的高级 API,
tf.keras 是 Keras API 规范的 TensorFlow 实现。tf.keras 可以运行任何与 Keras 兼容的代码,保留了一些细微的差别。导入包的时候根据其具体位置进行导入,具体问题具体分析。

 

查找错误的心路历程:

       出现No module的错误,可能的几个原因:(1)没有下载这个包;(2)没有正确安装这个包(包括安装路径不对、安装与虚拟环境不匹配、环境变量设置出错等等);(3)间接的,曾经下载了这个包,但和网站上不是同样的版本。

       我们知道,tensorflow引用包时,from A.B import C或者 import A.B.C 或者X=A.B.C等这几种引用结构,都表示这包A文件夹下的包B文件夹内,存在包C文件夹或名为C的函数。那我去找找我的tensorflow环境的tensorflow包有没有keras。

                                                                 

       确实没有keras这个包。然后百度中搜索No module named 'tensorflow.keras',会有类似以下的检索结果

“No module named 'keras'解决办法”

“解决no module named tensor..._”

“解决ImportError: No module named 'tensorflow.core' ...”

       细心观察,其实他们错的都不是tensorflow.keras,而在不熟悉的时候,抱着试一试的态度,于是就打开keras解决办法各种试,一边是,一边疑惑,他们的界面最后成功结果试:import keras成功,我的问题能成功解决么?此路不通。

       第二条路,去tensorflow官网(PS,国内访问tensorflow网站,网上查询的www.tensorflow.org不要再尝试了,tensorflow国内站点访问tensorflow.google.cn),查询keras引导,直接就让你导入,没有解释导入的keras哪里来的,点开tf.keras,也没有说明,参考keras.io,又回到了keras,还是没有讲怎么引用,仍然一头雾水。

       第三条路,查询tf.keras 与 keras的区别,各种讲它俩的区别,还是没有说引用的问题。不过让我确信了,tensorflow确实封装了keras的包。最后用到了上文的测试程序。

  • 175
    点赞
  • 257
    收藏
    觉得还不错? 一键收藏
  • 34
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值