如何在 google-cloud-ml 作业或 Google Cloud Storage 中加载 numpy npz 文件?

ast*_*omz 3 google-cloud-ml

我有一个 google-cloud-ml 作业,需要从 gs 存储桶加载 numpy .npz 文件。我按照这个例子了解如何从 gs 加载 .npy 文件,但它对我不起作用,因为 .npz 文件被压缩。

这是我的代码:

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

f = StringIO(file_io.read_file_to_string('gs://my-bucket/data.npz'))
data = np.load(f)
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa2 in position 10: invalid start byte

显然,将数据编码为str是不正确的,但我不知道如何解决这个问题。

有人可以帮忙吗?谢谢!

ast*_*omz 5

事实证明我需要将二进制标志设置为Truein file_io.read_file_to_string()

这是工作代码:

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

f = BytesIO(file_io.read_file_to_string('gs://my-bucket/data.npz', binary_mode=True))
data = np.load(f)
Run Code Online (Sandbox Code Playgroud)

这适用于压缩和未压缩的 .npz 文件。