直接导入Keras还是通过TensorFlow导入?我应该卸载其中一个吗?

时间:2019-03-13 16:18:20

标签: tensorflow keras installation python-import tf.keras

我从互联网上获得了一些有效的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的安装方式,还是取决于它们的使用方式?是我必须摆脱的潜在混乱根源吗?换句话说,我应该修复安装,如何安装?还是我只接受其中的两种,并管理它们各自的用法以安全地与它们同住?

背景:我的安装在带有Python3.5.2的Ubuntu Linux下,其中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,而前者的版本更高且更丰富。

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

谢谢!

2 个答案:

答案 0 :(得分:0)

不需要修复。它们是两个不同的软件包,您只需管理它们各自的用法即可。

答案 1 :(得分:0)

与其发布我自己的答案,不如给我一个非常详尽的答案,比我能写的要好得多:它是here(感谢Adrian Rosebrock)。

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