pycharm中keras导入报错怎么办,如何应对处理
Admin 2022-08-03 群英技术资讯 746 次浏览
目前无论是中文还是国外网站对于如何正确的导入keras,如何从tensorflow中导入keras,如何在pycharm中从tensorflow里导入keras,这几个问题都众说纷纭,往往是互相借鉴给出一个可用的解决方法,但没有更进一步的解释了。常见因为keras导入引发的问题有以下几个:
首先需要说明的是上面两种问题其实并不能称之为“问题”,因为实际上这些代码都是可以运行的,并且如果在pycharm自带的python console里执行这些问题也都是不存在的, 只是由于编译器自带的bug5使得这些现象一再发生。如果您只是要求代码能运行即可,那可以关闭页面大胆的继续编程了,但要是想要解决这些不便,可以继续看下去。
首先给出这些问题的解决方法:
使用如下方式导入keras:
from tensorflow.python import keras
不从tensorflow里导入keras:
import keras
不导入keras,改用tf.keras.xxx
来使用keras的相关函数;
首先我们要明确一个概念,keras只是一个前端的API,其后端的计算都要基于现有的计算引擎,比如Theano或者Tensorflow1,而如今Tensorflow已经成为了Keras的默认后端,后者也成为了前者的官方高级API,也就意味着当我们安装2.0+版本的Tensorflow时实际会自动安装Keras2,经笔者实测也确实如此。
那么当我们通过不同方式来导入keras时,我们到底在导入什么,不同导入方法导入的包是否有区别呢?以下分别通过包的导入路径及导入内容进行具体分析,为了更好理解其中内容,建议去学习python中import的相关知识3.
keras常用导入方法有以下几种:
import keras from tensorflow import keras from tensorflow.python import keras import tensorflow as tf tf.keras
寻址到的包为venv\Lib\site-packages\keras\__init__.py
,也就是找到了keras的安装路径,直接运行了__init__.py
。但是keras这个包的init文件中并没有显式的导入keras包中的所有子包,只是显式导入了一部分比如Sequetial ,Model:
from keras import models from keras.engine.input_layer import Input from keras.engine.sequential import Sequential from keras.engine.training import Model
在仅导入keras的情况下,pycharm窗口中我们无法使用其他的代码自动补全,比如keras.optimizers
等等。但值得注意的是,刚刚我说的是没有“显式导入”,而实际上显式导入的这些py文件本身其实又导入了大部分keras所包含的函数,这就使得虽然我们写出keras.optimizers
这样的语句在pycharm中无法不全、高亮,但运行起来是没有问题的,而在python console中运行也能够自动补全,其实这也算是pycharm的一个bug了。如果希望在窗口界面也能自动补全,就应该直接导入keras文件夹下的optimizer子文件夹:import keras.optimizer
。
这一方法是执行了venv\Lib\site-packages\tensorflow\__init__.py,而该文件中的keras实际是从 keras.api._v2 中导入了keras,执行了\venvLib\site-packages\keras\api\_v2\keras\_init.py,而再进一步的查看它实际也只是个空壳,进一步的调用了\venvLib\site-packages\keras\api\_v2\keras文件夹下的其他子文件夹,虽然这些文件夹看起来十分唬人,和重写了所有方法一样,但实际上其下只包含着__init__
文件,内容也只是from keras import xx
,和1中的方没有区别,只是个重定位而已。因此我们可以推测,在2.0+的版本里使用tf.keras.xx
和keras.xx
实际上是等价的,而在以前的版本是否存在区别,亦或者独立安装的keras是否有区别,笔者尚未去证实。
执行了venv\Lib\site-packages\tensorflow\python\keras\__init__.py,这里的keras下包含了第一二种方法里导入的keras下属函数,是对1、2中方法的重写而不是重定位。tf.python.keras
是private的,提供给开发者使用的,并不建议普通用户来使用。
这一方法和2是等价的,不同点在于在pycharm中使用这种方式书写可以实现代码的自动补全。
这篇报错处理花了挺长时间去搜集相关资料并且实际验证,最终弄明白了python的import原理和keras到底是以怎样的形式和tensorflow取得联系,也算是个挺大的收获,总结就是后续的代码直接import keras
即可。当然还有一些不太明晰的地方,比如tf.python.keras
和keras在通用函数的实现方面方面是否存在区别,又有着怎样的区别?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
对于中文乱码的情况很多朋友在编程过程中都有遇到,因此这篇文章就主要给大家分享的是有关python出现中文乱码怎样解决的方法。小编觉得挺实用的,因此分享给大家做个参考,感兴趣的朋友就继续往下看吧。
Python基础学习之字符串操作 字符串是编程中最常遇到的类型,所以掌握好字符串的常用操作方法,非常的必要! 1. 字符串的切片 [字符串的切片是最常见的字符串操作,必须要掌握;
弹出框是自动化测试中一种常见的元素,这种元素通常是客户端自带的,下面这篇文章主要给大家介绍了关于Selenium定位浏览器弹窗方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
这篇文章主要为大家介绍了python神经网络facenet人脸检测及keras实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008