Python 使用导入keras和导入tensorflow.keras之间的区别?

Python 使用导入keras和导入tensorflow.keras之间的区别?,python,tensorflow,keras,Python,Tensorflow,Keras,我一直在笔记本电脑上使用tensorflow作为cpu,由于速度太慢,我决定转移到我的台式电脑上,使用tensorflow作为gpu 问题是,在我的台式计算机中,我不能像这样导入,我可以在笔记本电脑上这样做: from tensorflow.keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.layers import Dropout, Flatten, Dense from tensorflow.k

我一直在笔记本电脑上使用tensorflow作为cpu,由于速度太慢,我决定转移到我的台式电脑上,使用tensorflow作为gpu

问题是,在我的台式计算机中,我不能像这样导入,我可以在笔记本电脑上这样做:

from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Dropout, Flatten, Dense
from tensorflow.keras.applications import MobileNetV2
因此,我决定使用keras模块和tensorflow gpu作为后端,因此我在桌面上的导入如下所示:

from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Dropout, Flatten, Dense
from keras.applications import MobileNetV2
keras                     2.3.1                    pypi_0    pypi
keras-applications        1.0.8                      py_0
keras-preprocessing       1.1.0                      py_1
tensorboard               2.1.0                     py3_0
tensorflow                2.1.0           eigen_py36hdbbabfe_0
tensorflow-base           2.1.0           eigen_py36h49b2757_0
tensorflow-estimator      2.1.0              pyhd54b08b_0
keras                     2.3.1                    pypi_0    pypi
keras-applications        1.0.8                      py_0
keras-preprocessing       1.1.0                      py_1
tensorboard               2.1.0                     py3_0
tensorflow                2.1.0           gpu_py36h3346743_0
tensorflow-base           2.1.0           gpu_py36h55f5790_0
tensorflow-estimator      2.1.0              pyhd54b08b_0
tensorflow-gpu            2.1.0                h0d30ee6_0
此外,我的笔记本电脑上的conda列表如下所示:

from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Dropout, Flatten, Dense
from keras.applications import MobileNetV2
keras                     2.3.1                    pypi_0    pypi
keras-applications        1.0.8                      py_0
keras-preprocessing       1.1.0                      py_1
tensorboard               2.1.0                     py3_0
tensorflow                2.1.0           eigen_py36hdbbabfe_0
tensorflow-base           2.1.0           eigen_py36h49b2757_0
tensorflow-estimator      2.1.0              pyhd54b08b_0
keras                     2.3.1                    pypi_0    pypi
keras-applications        1.0.8                      py_0
keras-preprocessing       1.1.0                      py_1
tensorboard               2.1.0                     py3_0
tensorflow                2.1.0           gpu_py36h3346743_0
tensorflow-base           2.1.0           gpu_py36h55f5790_0
tensorflow-estimator      2.1.0              pyhd54b08b_0
tensorflow-gpu            2.1.0                h0d30ee6_0
桌面上的conda列表如下所示:

from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Dropout, Flatten, Dense
from keras.applications import MobileNetV2
keras                     2.3.1                    pypi_0    pypi
keras-applications        1.0.8                      py_0
keras-preprocessing       1.1.0                      py_1
tensorboard               2.1.0                     py3_0
tensorflow                2.1.0           eigen_py36hdbbabfe_0
tensorflow-base           2.1.0           eigen_py36h49b2757_0
tensorflow-estimator      2.1.0              pyhd54b08b_0
keras                     2.3.1                    pypi_0    pypi
keras-applications        1.0.8                      py_0
keras-preprocessing       1.1.0                      py_1
tensorboard               2.1.0                     py3_0
tensorflow                2.1.0           gpu_py36h3346743_0
tensorflow-base           2.1.0           gpu_py36h55f5790_0
tensorflow-estimator      2.1.0              pyhd54b08b_0
tensorflow-gpu            2.1.0                h0d30ee6_0

那么,使用tensorflow.keras.applications之类的导入和直接使用keras.applications之间有什么区别?哪一个更好还是更差?我到处找,在我的桌面上找不到导入的解决方案,我想修复它,因为我喜欢使用tensorflow.keras之类的导入。

现在没有太大的区别。Keras现在在TensorFlow中,因为谷歌选择维护它来补充TensorFlow,因为Keras是一个高级API。我建议使用tensorflow.keras,因为在未来,由于谷歌团队的支持,它将获得更多支持


tensorflow.keras
导入使用存储库代码,而
keras
导入使用存储库代码。两者使用独立的方法/类实现,即使
keras
tensorflow
导入

根据您的使用情况,功能可能会有显著差异,也可能差异不大
tensorflow.keras
被推荐用于更好的维护和更新-除非您使用TFAFAIK,(1)
keras
模块处于与
tensorflow.keras
不同的开发路径。您可以通过安装这两个版本的最新版本并运行以下终端命令进行检查:

> pip list | grep -i keras
Keras                2.3.1       
Keras-Applications   1.0.8       
Keras-Preprocessing  1.1.0
比照

> python -c "import tensorflow; print(tensorflow.keras.__version__)"
2.2.4-tf

> pip list | grep tensorflow                        
tensorflow           2.1.0
(2) 根据我的经验,
tensorflow.keras
访问某些模块的灵活性较低。例如,假设我们希望通过修改
compute\u output\u shape()
来创建自定义卷积/池层。然后我们必须通过
从keras.utils.conv\u utils import conv\u output\u length导入它。但目前我还没有找到在Tensorflow v2.x中导入
conv\u output\u length()
的方法

但是,今后,
tensorflow.keras将从谷歌获得更多更好的支持。看这个图表
与…比较

谢谢您提供的信息!你知道有什么方法可以在桌面上修复我的导入吗?使用tensorflow.keras似乎是最好的选择,当我尝试在桌面上使用tensorflow.keras时,它根本不起作用,我也找不到解决方案anywhere@IgnacioFrizzera为什么不起作用?包括你在问题中看到的任何错误。我修复了导入的问题,这是PyCharm的错误。必须更新到最新版本,并已修复。谢谢