为什么我们已经在 python 中导入了 tensorflow,为什么还要从 tensorflow 中导入 keras?
Why do we have to import keras from tensorflow if we have already imported tensorflow in python?
我现在正在学习 tensorflow 和 keras,我看到所有教程都有这两个导入:
import tensorflow as tf
from tensorflow import keras
根据我对python导入的理解,我认为第二行是多余的,因为如果我们已经在第一行导入了tensorflow,那么我们应该已经导入了tensorflow中的每个模块。就像我们有
import math
那么我们应该有 math.log(), math.sqrt() 可用。
但是,如果我发表评论
from tensorflow import keras
然后这行代码
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
会return
NameErrorTraceback(最后一次调用)
<ipython-input-3-740ba65f0ade> in <module>()
----> 1 model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
NameError: name 'keras' is not defined
如果只有import tensorflow as tf,为什么不能直接使用tf.keras?与 import math?
中的导入相比,此导入有何特别之处
谢谢
错误与 tf.keras
无关。在您的模型定义中,您使用 keras
中的 layers
而不是 tf.keras
。这就是为什么您在删除导入时会收到错误消息的原因。将您的模型定义替换为:
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
现在,您不需要从 tensorflow
导入 keras
。
当你在python中导入一个模块时,你只导入那个模块(连同模块导入的模块),导入模块中定义的任何模块都需要自己导入,
例子
$ ptree
.
├── imports.py
└── pmod
├── cmod.py
└── __init__.py
1 directory, 3 files
$ cat imports.py
import pmod
pmod.do()
pmod.cmod.do()
$ python3 imports.py
hello from pmod
Traceback (most recent call last):
File "imports.py", line 4, in <module>
pmod.cmod.do()
AttributeError: module 'pmod' has no attribute 'cmod'
但是,如果我明确导入它,它确实有效
$ cat imports.py
import pmod
import pmod.cmod
pmod.do()
pmod.cmod.do()
$ python3 imports.py
hello from pmod
hello from cmod
我现在正在学习 tensorflow 和 keras,我看到所有教程都有这两个导入:
import tensorflow as tf
from tensorflow import keras
根据我对python导入的理解,我认为第二行是多余的,因为如果我们已经在第一行导入了tensorflow,那么我们应该已经导入了tensorflow中的每个模块。就像我们有
import math
那么我们应该有 math.log(), math.sqrt() 可用。
但是,如果我发表评论
from tensorflow import keras
然后这行代码
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
会return NameErrorTraceback(最后一次调用)
<ipython-input-3-740ba65f0ade> in <module>()
----> 1 model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
NameError: name 'keras' is not defined
如果只有import tensorflow as tf,为什么不能直接使用tf.keras?与 import math?
中的导入相比,此导入有何特别之处谢谢
错误与 tf.keras
无关。在您的模型定义中,您使用 keras
中的 layers
而不是 tf.keras
。这就是为什么您在删除导入时会收到错误消息的原因。将您的模型定义替换为:
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
现在,您不需要从 tensorflow
导入 keras
。
当你在python中导入一个模块时,你只导入那个模块(连同模块导入的模块),导入模块中定义的任何模块都需要自己导入,
例子
$ ptree
.
├── imports.py
└── pmod
├── cmod.py
└── __init__.py
1 directory, 3 files
$ cat imports.py
import pmod
pmod.do()
pmod.cmod.do()
$ python3 imports.py
hello from pmod
Traceback (most recent call last):
File "imports.py", line 4, in <module>
pmod.cmod.do()
AttributeError: module 'pmod' has no attribute 'cmod'
但是,如果我明确导入它,它确实有效
$ cat imports.py
import pmod
import pmod.cmod
pmod.do()
pmod.cmod.do()
$ python3 imports.py
hello from pmod
hello from cmod