目前,我这样做:
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/