python - 在 google-cloud-ml 作业中加载 numpy 数组

标签 python numpy tensorflow google-cloud-ml

在我要启动的模型中,我有一些必须用特定值初始化的变量。

我目前将这些变量存储到 numpy 数组中,但我不知道如何调整我的代码以使其适用于 google-cloud-ml 作业。

目前我像这样初始化我的变量:

my_variable = variables.model_variable('my_variable', shape=None, dtype=tf.float32, initializer=np.load('datasets/real/my_variable.npy'))

有人可以帮助我吗?

最佳答案

首先,您需要在 GCS 上复制/存储数据(例如,使用 gsutil)并确保您的训练脚本可以访问该存储桶。最简单的方法是将数组复制到与数据相同的存储桶中,因为您可能已经为该存储桶配置了读取访问权限。如果存储桶与您的培训工作在同一个项目中并且您关注了 these说明(特别是 gcloud beta ml init-project),你应该设置。如果数据将在另一个桶中,请参阅 these说明。

然后您需要使用能够从 GCS 加载数据的库。 Tensorflow 包含一个可以执行此操作的模块,尽管您可以自由使用任何可以从 GCS 读取的客户端库。以下是使用 TensorFlow 的 file_io 模块的示例:

from StringIO import StringIO
import tensorflow as tf
import numpy as np
from tensorflow.python.lib.io import file_io

# Create a variable initialized to the value of a serialized numpy array
f = StringIO(file_io.read_file_to_string('gs://my-bucket/123.npy'))
my_variable = tf.Variable(initial_value=np.load(f), name='my_variable')

请注意,我们必须将文件读入字符串并使用StringIO,因为file_io.FileIO 没有完全实现numpy 所需的查找功能。加载

好处:如果它有用,您可以使用 file_io 模块直接将 numpy 数组存储到 GCS,例如:

np.save(file_io.FileIO('gs://my-bucket/123', 'w'), np.array([[1,2,3], [4,5,6]]))

对于 Python 3,使用 from io import StringIO 而不是 from StringIO import StringIO

关于python - 在 google-cloud-ml 作业中加载 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41633748/

相关文章:

python - 有什么方法可以将 Scapy Packet 中的字段链接到构建的 str 中的部分吗?

python - 使用 aptitude 安装包时的多个版本的 python

python - 我是怎么得到这个数字的?

python - 识别猫狗: Error in Flattening in Keras Tensorflow

tensorflow 服务输入负载

python - 切片正在向我的阵列添加第三维 - 不知道为什么

python - 如何在套接字中使用 raw_input

python - 如何按列累加numpy数组中的值?

python - 将 InputLayer 添加到现有 Keras 模型以与 Android Tensor Flow Library 一起使用

Python: "ImportError: DLL load failed: The specified module could not be found."导入 ffn(Python 的金融库)时出现问题