Skip to main content
 首页 » 编程设计

python之如果我们已经在 python 中导入了 tensorflow,为什么还要从 tensorflow 中导入 keras

2024年08月13日30davidwang456

我现在正在学习 tensorflow 和 keras,我看到所有教程都有这两个导入:

import tensorflow as tf 
from tensorflow import keras 

根据我对 python import 的理解,我认为第二行是额外的,因为如果我们已经在第一行中导入了 tensorflow,那么我们应该已经导入了 tensorflow 中的每个模块。就像我们有

import math  

那么我们应该有 math.log()、math.sqrt() 可用。

但是,如果我评论

from tensorflow import keras 

然后是这行代码

model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) 

会回来 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 中的导入相比,此导入有何特别之处?

谢谢

请您参考如下方法:

当你在 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