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