我从互联网上获得了一些有效的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,而前者的版本更高且更丰富。
相关阅读,有用但不足以解决“是否需要修复?”问题:
谢谢!
答案 0 :(得分:0)
不需要修复。它们是两个不同的软件包,您只需管理它们各自的用法即可。
答案 1 :(得分:0)
与其发布我自己的答案,不如给我一个非常详尽的答案,比我能写的要好得多:它是here(感谢Adrian Rosebrock)。
免责声明:我与Adrian或其活动没有任何联系。不过,我非常感谢他的解释。