全部
(环境:Windows 7,Python 3.6,Keras和tensorflow库,gcloud ml引擎)
我正在使用here中介绍的使用gcloud ml引擎运行某些Keras ML模型示例。一切都很好,但是尽管我使用的是相同的训练和验证数据,但在多次运行中却得到了各种结果。我的目标是通过多次跑步获得生殖训练结果。
我用Google搜索了一段时间,并在此Keras Q&A中找到了一些与生殖结果有关的解决方案。基本上,他们首先建议这样做:
首先,您需要在程序启动之前将PYTHONHASHSEED环境变量设置为0(而不是在程序本身内部)。
我知道我可以在自己的计算机上本地设置变量,也可以在部署here所介绍的gcloud函数时进行设置。
但是,当我使用 gcloud ML引擎(在服务器端但不在本地)时,我只是不知道如何设置环境变量。因此,当我的模型程序在那里运行时,我无法在gcloud服务器上设置“ PYTHONHASHSEED = 0”。
顺便说一句,总的来说,我知道随机性在ML领域是有用的,但是我对产生生殖结果的话题还不是很熟悉,因此也欢迎对此话题提出任何想法。谢谢!
大七
PS: 我试图在下面的运行时设置环境变量:
import os
os.environ["PYTHONHASHSEED"] = "0"
print(hash("keras"))
但是不能起到“在程序启动前设置变量”的作用。因此,有了此代码,我仍然无法从多次运行中获得相同的哈希结果。另一方面,在本地,如果在运行代码之前设置“ PYTHONHASHSEED = 0”,则可能会得到相同的哈希结果。
答案 0 :(得分:1)
我不相信Cloud ML Engine API提供了设置环境变量的机制。但是,您可以通过编写包装器脚本(注意:未测试的代码)来解决此问题:
import os
import subprocess
env = os.environ.copy()
env["PYTHONHASHSEED"] = "0"
subprocess.check_call(['python', 'main.py'], env=env)