python - 有没有更短的方法来导入子模块的类?

标签 python

目前,我这样做:

import tensorflow as tf
keras = tf.contrib.keras
Sequential = keras.models.Sequential
Dense = keras.layers.Dense
Dropout = keras.layers.Dropout
Flatten = keras.layers.Flatten
Conv2D = keras.layers.Conv2D
MaxPooling2D = keras.layers.MaxPooling2D

我想做这样的事情:

import tensorflow as tf
keras = tf.contrib.keras
from tf.contrib.keras import (Sequential, Dense, Dropout, Flatten,
                              Conv2D, MaxPooling2D)

但是当我尝试这个的时候我得到了

ImportError: No module named tf.contrib.keras

有没有比第一个代码块更短的方法来导入这些类?

其他尝试

>>> from tensorflow.contrib.keras import (Sequential, Dense, Dropout, Flatten)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: cannot import name Sequential

二号

>>> import tensorflow
>>> from tensorflow.contrib.keras.models import Sequential
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named models
>>> tensorflow.contrib.keras.models.Sequential
<class 'tensorflow.contrib.keras.python.keras.models.Sequential'>

最佳答案

首先,您需要使用 tensorflow 的实际名称导入模块,而不是 tf您使用的别名:

二、tensorflow.contrib.keras的包结构有点奇怪。名字

tensorflow.contrib.keras.models
tensorflow.contrib.keras.layers

实际上是嵌套更深的模块的别名

tensorflow.contrib.keras.api.keras.models
tensorflow.contrib.keras.api.keras.layers

这些别名的创建方式不允许您使用 from imports 来导入它们的内容。您可以直接使用“真实”姓名:

from tensorflow.contrib.keras.api.keras.models import Sequential
from tensorflow.contrib.keras.api.keras.layers import (
        Dense, Dropout, Flatten, Conv2D, MaxPooling2D)

(这里还有更多的别名 - tensorflow.contrib.keras.api.keras.* 模块从 tensorflow.contrib.keras.python.keras 中提取它们的大部分内容 - 但我们不需要担心这个。)

关于python - 有没有更短的方法来导入子模块的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44684209/

相关文章:

python - 为什么我们在 python 中有可调用对象?

python - QtDesigner4 中的 matplotlib 小部件

python - WKHTMLtoPDF加载CSS和媒体文件

Python-多处理

Python Sqlalchemy 计算查询中的重复结果

python - python if 语句的 DRY 版本

Python:在最后一个小写字母处拆分字符串

python - 如何从Python线程访问数据

python - 特定区域的 Foursquare field

python - reportlab 中的条件分页符