使用gcloud ML引擎时如何设置环境变量?

How to set an environment variable when using gcloud ML engine?

全部,

(环境:Windows 7,Python 3.6,Keras 和 tensorflow 库,gcloud ml 引擎)

我是 运行 某些使用 gcloud ml 引擎的 Keras ML 模型示例 here。一切都很好,但我只是在多次运行中得到了不同的结果,尽管我使用的是相同的训练和验证数据。我的目标是通过多次运行获得再生训练结果。

我在谷歌上搜索了一段时间,并在此 Keras Q&A 中找到了一些关于产生生殖结果的解决方案。基本上他们首先建议这个:

First, you need to set the PYTHONHASHSEED environment variable to 0 before the program starts (not within the program itself).

我知道我可以在我自己的机器上本地设置变量,或者我可以在部署 gcloud 功能时设置它,如介绍的那样 here

但是,当我使用 gcloud ML engine(在服务器端而不是在本地)时,我只是不知道如何设置环境变量。因此,当我的模型在那里编程 运行 时,我无法在 gcloud 服务器上设置 "PYTHONHASHSEED=0"。

顺便说一句,总的来说,我知道随机性在 ML 领域是一个有用的性质,但我对产生再生结果这个话题还不是很熟悉,所以也欢迎任何关于这个话题的想法。谢谢!

大旗

PS: 我尝试在下面的 运行 时间内设置环境变量:

import os
os.environ["PYTHONHASHSEED"] = "0" 
print(hash("keras"))

但达不到"setting the variables before the program starts"的效果。因此,通过使用此代码,我仍然无法从多次运行中获得相同的哈希结果。另一方面,在本地,如果我在 运行 代码之前设置 "PYTHONHASHSEED=0",我可能会得到相同的哈希结果。

我不相信 Cloud ML Engine API 提供了设置环境变量的机制。但是,您可以通过编写包装脚本(注意:未测试代码)来解决此问题:

import os
import subprocess

env = os.environ.copy()
env["PYTHONHASHSEED"] = "0"

subprocess.check_call(['python', 'main.py'], env=env)