源码
from random import random
def seed_tensorflow(seed):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
tf.set_random_seed(seed)
error 1
Traceback (most recent call last):
File "D:/zl/CNN-SVM/denseNet/DenseNet.py", line 216, in <module>
seed_tensorflow(42)
File "D:/zl/CNN-SVM/denseNet/DenseNet.py", line 22, in seed_tensorflow
random.seed(seed)
AttributeError: 'builtin_function_or_method' object has no attribute 'seed'
解决
导入库的问题
1.from random import random:仅将random模块下定义的random()方法导进来。
2.import random :导入的是整个random模块,random模块下所有方法都可以调用。
3.from random import *, 即将random模块中的所有方法都导进来。
方法2和3使用后都不报错
采用第二种
import random
def seed_tensorflow(seed):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
tf.set_random_seed(seed)
error 2
Traceback (most recent call last):
File "D:/zl/CNN-SVM/denseNet/DenseNet.py", line 216, in <module>
seed_tensorflow(42)
File "D:/zl/CNN-SVM/denseNet/DenseNet.py", line 25, in seed_tensorflow
tf.set_random_seed(seed)
AttributeError: module 'tensorflow' has no attribute 'set_random_seed'
解决
报错原因
Tensorflow1.x版本和2.x版本部分方法名不兼容。
一定是你安装使用的是Tensorflow2.0及以上版本,而在程序中使用了Tensorflow1.x版本的方法或者情况相反。
方法
1.如果你导入Tensorflow模块的代码为:
import tensorflow
修改为
import tensorflow.compat.v1
2.如果你导入Tensorflow模块的代码为:
import tensorflow as tf
修改为
import tensorflow.compat.v1 as tf
或者在代码块中修改为
tf.compat.v1.set_random_seed(seed)
如果以上方法均不行,有以下两个硬核方案可选择:
1.卸载当前高版本的Tensorflow,安装1.x版本的Tensorflow。
2.将代码中不兼容的方法命,更改为对应Tensorflow版本的方法名。