google-cloud-ml - 腌制的 scipy 稀疏矩阵作为输入数据?

标签 google-cloud-ml

我正在研究一个多类分类问题,其中包括对简历进行分类。

我使用 sklearn 及其 TfIdfVectorizer 来获得一个大的 scipy 稀疏矩阵,在酸洗后将其输入到 Tensorflow 模型中。在我的本地计算机上,我加载它,将小批量转换为密集的 numpy 数组并填充 feed 字典。一切都很好。

现在我想在 ML 云上做同样的事情。我的泡菜存储在 gs://my-bucket/path/to/pickle但是当我运行我的训练器时,无法在此 URI ( IOError: [Errno 2] No such file or directory ) 中找到 pickle 文件。我正在使用pickle.load(open('gs://my-bucket/path/to/pickle), 'rb')提取我的数据。我怀疑这不是在 GCS 上打开文件的好方法,但我对 Google Cloud 完全陌生,找不到正确的方法。

另外,我读到必须使用 TFRecords 或 CSV 格式作为输入数据,但我不明白为什么我的方法不起作用。 CSV 被排除在外,因为矩阵的密集表示太大而无法容纳在内存中。 TFRecords 可以有效地编码这样的稀疏数据吗?是否可以从 pickle 文件中读取数据?

最佳答案

你说得对,Python 的“开放”不能与开箱即用的 GCS 一起使用。鉴于您使用的是 TensorFlow,您可以改用 file_io 库,该库既可以处理本地文件,也可以处理 GCS 上的文件。

from tensorflow.python.lib.io import file_io
pickle.loads(file_io.read_file_to_string('gs://my-bucket/path/to/pickle'))

注意:pickle.load(file_io.FileIO('gs://..', 'r')) 似乎不起作用。

欢迎您使用任何适合您的数据格式,并且不限于 CSV 或 TFRecord(您介意指出文档中提出该声明的位置吗?)。如果数据适合内存,那么您的方法是明智的。

如果内存无法容纳数据,您可能需要使用 TensorFlow 的 reader framework ,其中最方便的是 CSV 或 TFRecords。 TFRecord 只是字节字符串的容器。最常见的是,它包含序列化的 tf.Example data 确实支持稀疏数据(它本质上是一个 map )。请参阅tf.parse_example有关解析 tf.Example 数据的更多信息。

关于google-cloud-ml - 腌制的 scipy 稀疏矩阵作为输入数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40133223/

相关文章:

python - 谷歌机器学习引擎云存储作为文件

google-cloud-ml - 无法部署 Cloud ML 模型

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

google-cloud-ml - "error": "Prediction failed: unknown error."

python - 写入 Google Cloud ML 中的文件

python - Google ML Engine preprocessor_pb2 ImportError

google-cloud-ml - 没有名为 trainer 的模块

tensorflow - 本地预测的 gcloud 问题

google-cloud-ml - Google Cloud AI 平台上的 Tensorflow 2

python - 如何在谷歌机器学习中将 jpeg 图像转换为 json 文件