首页 > 解决方案 > 直接导入 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,前者版本更高,更丰富。

相关阅读资料,有用但不足以解决“是否需要修复?” 问题:

谢谢!

标签: tensorflowkerasinstallationpython-importtf.keras

解决方案


我不会发布我自己的答案,而是向您指出一个非常详尽的答案,比我能写的要好得多:它就在这里(感谢Adrian Rosebrock)。

免责声明:我与 Adrian 或他的活动没有任何联系。不过,我非常感谢他的解释。


推荐阅读