本文主要是介绍出现的离奇错误:AttributeError: ‘function‘ object has no attribute ‘seed‘,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
有代码如下:
import random
parser.add_argument('--seed', type=int, default=1)
args = parser.parse_args()torch.manual_seed(args.seed)
if torch.cuda.is_available():torch.cuda.manual_seed(args.seed)
random.seed(args.seed)
但是出现的问题是:
File "/home/zrp/.pycharm_helpers/pydev/pydevd.py", line 1496, in _execpydev_imports.execfile(file, globals, locals) # execute the scriptFile "/home/zrp/.pycharm_helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfileexec(compile(contents+"\n", file, 'exec'), glob, loc)File "/home/zrp/NestedGNN-master-2/run_tu.py", line 195, in <module>random.seed(args.seed)
AttributeError: 'function' object has no attribute 'seed'
这个错误是因为你的代码中存在一个命名冲突。Python标准库中有一个名为random
的模块,你使用了import random
,然后又试图使用random.seed(args.seed)
来设置随机种子。但是在你的代码中,random
不再是指向标准库中的random
模块,而是指向你之前导入的random
模块的seed
函数。
为了解决这个问题,你可以采取以下两种方法之一:
这个错误是因为你的代码中存在一个命名冲突。Python标准库中有一个名为random
的模块,你使用了import random
,然后又试图使用random.seed(args.seed)
来设置随机种子。但是在你的代码中,random
不再是指向标准库中的random
模块,而是指向你之前导入的random
模块的seed
函数。
为了解决这个问题,你可以采取以下两种方法之一:
- 重命名你的随机模块导入:将导入语句中的
random
重命名为另一个名字,例如my_random
,以避免命名冲突。这样,你就可以像下面这样设置随机种子:import random as my_random # 重命名导入的random模块# 然后使用my_random设置随机种子 my_random.seed(args.seed)
2. 不使用random
模块,直接使用random
函数:你可以不导入random
模块,而是使用Python的内置random
函数来设置随机种子。这样就不会有命名冲突了。示例如下:
# 不导入random模块,直接使用Python内置的random函数
import argparse
import torchparser = argparse.ArgumentParser()
parser.add_argument('--seed', type=int, default=1)
args = parser.parse_args()torch.manual_seed(args.seed)
if torch.cuda.is_available():torch.cuda.manual_seed(args.seed)
import random # 如果需要在其他地方使用random模块,可以在这里导入
random.seed(args.seed)
选择哪种方法取决于你的偏好和代码的结构。如果你打算在代码的其他地方使用random
模块的其他功能,第一种方法可能更合适。如果只是设置随机种子,第二种方法更简单
这篇关于出现的离奇错误:AttributeError: ‘function‘ object has no attribute ‘seed‘的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!