tensorflow - 直接导入 Keras 还是通过 TensorFlow 导入?我应该卸载其中一个吗?
问题描述
我有一些从互联网上获得的工作 Python3 源代码,其中初始 Keras 导入是这样直接的:
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
...
在 TensorFlow 文档中,我看到了以下间接形式:
import tensorflow as tf
from tensorflow.keras import layers
...
对我来说,它们似乎分别意味着,可以在不知道 TensorFlow 落后的情况下使用 Keras,并且 Keras 是(再次?)作为 TensorFlow 的一部分提供的。(我有点期待 Keras 在前一种情况下同样提供对 TensorFlow 的引用)
有什么区别?这取决于 Keras 和 TensorFlow 的安装方式,还是取决于它们的使用方式?这是我必须摆脱的潜在混乱来源吗?换句话说,我应该修复我的安装,以及如何修复?还是我应该接受有两个,并管理它们各自的用法以安全地与它们一起生活?
背景:我的安装是在 Ubuntu Linux 下,使用 Python3.5.2,其中pip3 list
显示了以下包:
Keras (2.2.4)
Keras-Applications (1.0.6)
Keras-Preprocessing (1.0.5)
tensorboard (1.12.0)
tensorflow (1.12.0)
顺便说一句,我已经检查过它们确实不同:
import keras as keras
import tensorflow.keras as tf_keras
print( keras is tf_keras )
---> False
print( [keras.__version__ , tf_keras.__version__] )
---> ['2.2.4', '2.1.6-tf']
print( [len(dir(keras)) , len(dir(tf_keras)) ] )
---> [32, 30]
print( [ len(dir(keras.models)) , len(dir(tf_keras.models)) ] )
---> [27, 17]
print( [ len(dir(keras.layers)) , len(dir(tf_keras.layers)) ] )
---> [167, 117]
事实上,我似乎有两个不同的 Keras,前者版本更高,更丰富。
相关阅读资料,有用但不足以解决“是否需要修复?” 问题:
- 使用 TensorFlow contrib keras 时导入语句
- “import keras”和“import tensorflow.keras”有什么区别
- Keras 和 tf.keras 之间的区别:是否应该更改旧的 Keras 代码?
- 为什么keras不允许以这种方式添加卷积层?
谢谢!
解决方案
我不会发布我自己的答案,而是向您指出一个非常详尽的答案,比我能写的要好得多:它就在这里(感谢Adrian Rosebrock)。
免责声明:我与 Adrian 或他的活动没有任何联系。不过,我非常感谢他的解释。
推荐阅读
- python - 在使用 rabbitmq 服务器在 django 频道层中添加一个组时?rabbitmq服务器连接不上
- javascript - 加载页面以禁用复选框(使用jquery)后,如何使javascript文件在mvc中工作?
- portforwarding - 为什么端口转发在华为路由器中不起作用
- objective-c - NSURLSession dataTaskWithRequest 返回 nil 数据
- c - 为什么 strlen() 函数给出错误的值
- c# - 尝试为用户“chuacw”查找角色时出错。可能的原因是无效的客户端 cookie 或用户重命名
- php - 生成所有案例NUMBER LETTER NUMBER - php
- c++ - 存储可变参数和回调以供以后使用
- loops - 如何在此 AHK 脚本上设置开关?
- python - Pyplot: Drawing figure in a custom scale (both x and y)