首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用导入keras和导入tensorflow.keras有什么不同?

使用导入keras和导入tensorflow.keras有什么不同?
EN

Stack Overflow用户
提问于 2020-04-07 06:41:13
回答 3查看 308关注 0票数 2

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

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

代码语言:javascript
复制
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Dropout, Flatten, Dense
from tensorflow.keras.applications import MobileNetV2

所以我决定使用keras模块和tensorflow-gpu作为后端,这样我在桌面上的导入就像这样:

代码语言:javascript
复制
from keras.preprocessing.image import ImageDataGenerator
from keras.layers import Dropout, Flatten, Dense
from keras.applications import MobileNetV2

此外,我在笔记本电脑上的conda列表如下所示:

代码语言:javascript
复制
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

我在桌面上的conda列表如下所示:

代码语言:javascript
复制
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这样的导入。

EN

回答 3

Stack Overflow用户

发布于 2020-04-07 06:58:46

tensorflow.keras导入使用TensorFlow存储库代码,而keras导入使用Keras存储库代码。这两种方法使用独立的方法/类实现,即使keras是从tensorflow导入的。

根据您的使用情况,功能可能会有很大差异,也可能不会有太大差异。除非您使用TF <2,因为除了performance considerations之外,两者在大多数情况下都是一样的,否则推荐使用tensorflow.keras进行维护和更新。

票数 3
EN

Stack Overflow用户

发布于 2020-04-07 06:51:58

现在没有太大的不同。Keras现在在TensorFlow内部,因为谷歌选择维护它来补充TensorFlow,因为Keras是一个高级应用编程接口。我建议使用tensorflow.keras,因为在未来,由于谷歌团队的存在,它将会有更多的支持。

reference

票数 1
EN

Stack Overflow用户

发布于 2020-04-07 07:21:20

AFAIK,(1) keras模块与tensorflow.Keras处于不同的开发路径。您可以通过安装这两个版本的最新版本并运行以下终端命令来检查它:

代码语言:javascript
复制
> pip list | grep -i keras
Keras                2.3.1       
Keras-Applications   1.0.8       
Keras-Preprocessing  1.1.0

与…比较

代码语言:javascript
复制
> python -c "import tensorflow; print(tensorflow.keras.__version__)"
2.2.4-tf

> pip list | grep tensorflow                        
tensorflow           2.1.0

(2)根据我的经验,tensorflow.keras访问某些模块的灵活性较低。例如,假设我们想要通过修改compute_output_shape()来创建自定义卷积/池层。然后我们必须通过from keras.utils.conv_utils import conv_output_length导入它。但是目前我还没有找到在Tensorflow v2.x中导入conv_output_length()的方法。

但是,展望未来,tensorflow.keras将从谷歌获得更多更好的支持。将Keras contrib graphTensorflow contrib graph进行比较,查看此图

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61070082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档