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

标签 python machine-learning keras gcloud google-cloud-ml

全部,

(环境: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引擎时如何设置环境变量(在服务器端,但不在本地)。因此,当我的模型程序在 gcloud 服务器上运行时,我无法在 gcloud 服务器上设置“PYTHONHASHSEED=0”。

顺便说一句,总的来说,我知道随机性在机器学习领域是一个有用的特性,但我对生成繁殖结果的主题还不太熟悉,所以也欢迎任何关于这个主题的想法。谢谢!

大奇

PS: 我尝试在运行时设置环境变量如下:

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

但无法达到“程序启动前设置变量”的效果。因此,通过使用这段代码,我仍然无法从多次运行中获得相同的哈希结果。另一方面,在本地,如果我在运行代码之前设置“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)

关于python - 使用 gcloud ML 引擎时如何设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52616287/

相关文章:

python - ModuleNotFoundError : No module named 'keras.backend.tensorflow_backend'

python - sumy LexRankSummarizer() 输出文本的正确格式

python - 如何从字典中写入文本文件,其中每个键都是一个新行?

python - PIL 从 I;16 转换为 JPEG 产生白色图像

python - 构建天气预报实时数据管道

tensorflow - 如何用keras更好地组织tensorboard中的节点?

python - 快速检查主表中的匹配 ID 的方法?

machine-learning - 多语言文本垃圾邮件检测

python - TensorFlow 中的最大 margin 损失

python - 将 tf.keras.utils.image_dataset_from_directory 与标签列表一起使用