当前位置: 首页 > 面试题库 >

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

雷逸仙
2023-03-14
问题内容

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

我目前将这些变量存储到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),并确保您的训练脚本可以访问该存储桶。最简单的方法是将阵列复制到与数据相同的存储桶中,因为您可能已经将该存储桶配置为具有读取访问权限。如果存储桶与您的培训工作在同一项目中,并且您遵循了这些说明(尤其是gcloud beta ml init- project),则应进行设置。如果数据将在另一个存储桶中,请参阅以下说明。

然后,您需要使用一个能够从GCS加载数据的库。尽管您可以自由使用任何可以从GCS读取的客户端库,但Tensorflow包含一个可以执行此操作的模块。以下是使用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未完全实现所需的seek函数,因此必须将文件读取为字符串并使用numpy.load

奖励:如果有用,您可以使用该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处理数据流 模板 ,我想访问作业ID并将其保存到特定的Firestore文档。 是否可以访问作业ID? 我在文档中找不到与此有关的任何内容。 问题答案: 您可以通过在管道中进行调用来实现(请参见下面的完整代码)。一种可能性是始终使用相同的作业名称来调用模板,这很有意义,否则可以将作业前缀作为运行时参数传递。使用正则表达式解析作业列表,以查看该作业是否包含名称前

  • 我们的一些数据流作业在读取源数据文件时随机崩溃。 作业日志中写入了以下错误(workers日志中没有任何内容): 我们有时也会遇到这种错误(登录在工人日志中): 源数据文件存储在谷歌云存储中。 数据路径正确,作业通常在重新启动后工作。我们直到一月底才遇到这个问题。 使用以下参数启动作业:--tempLocation='gstoragelocation'--stagingLocation='Othe

  • 目前,我们正在库伯内特斯上使用自己安装的气流版本,但想法是在云作曲家上迁移。我们使用Airflow运行数据流作业,使用DataFlowJavaoperator的自定义版本(使用插件),因为我们需要执行java应用程序,而java应用程序不是在jar中自包含的。因此,我们基本上运行一个bash脚本,该脚本使用以下命令: 所有jar依赖项都存储在所有辅助角色之间的共享磁盘中,但是在Composer中缺

  • 当我尝试使用在Pyspark/Scala中导入一个libsvm文件时,我得到以下错误- “无法为数据源:libsvm加载类。”

  • 我正试图在Dataflow上运行作业,每当我试图将其提交到使用Dataflow Runner运行时,我都会从服务收到以下错误: 我如何更改我的工作,使其更小,或增加工作大小限制?

  • 我们正在尝试调试运行在Google Cloud上的一个看似部分停顿的Apache Beam作业。我们的工作从PubSub读取消息,以各种方式对其进行转换,并将结果流式传输到几个BigQuery表。部分工作仍然是活动的-我们的几个表正在更新。但其他部分似乎停滞不前,上一次数据库表更新是在许多小时前(2:35AM)。不幸的是,我们在日志中没有看到有用的异常。我们只有少量用户生成的日志消息,每分钟发出一