2

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

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

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

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

4

1 回答 1

5

您是正确的,Python 的“open”不能与 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 的阅读器框架,其中最方便的往往是 CSV 或 TFRecords。TFRecord 只是一个字节字符串的容器。最常见的是,它包含支持稀疏数据的序列化tf.Example数据(它本质上是一个地图)。有关解析 tf.Example 数据的更多信息,请参阅tf.parse_example

于 2016-10-19T15:27:07.787 回答