调试Keras代码所遇到的问题(一):设置随机种子

源码

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版本的方法名。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值