2

私は、履歴書を分類することからなるマルチクラス分類問題に取り組んでいます。

sklearn とその TfIdfVectorizer を使用して、大きな scipy スパース マトリックスを取得し、ピクルス化した後に Tensorflow モデルにフィードしました。私のローカル マシンで、それをロードし、小さなバッチを高密度の numpy 配列に変換し、フィード ディクショナリを埋めます。すべてがうまく機能します。

今度は ML クラウドで同じことをしたいと思います。pickle は に保存されてgs://my-bucket/path/to/pickleいますが、トレーナーを実行すると、この URI ( ) に pickle ファイルが見つかりませんIOError: [Errno 2] No such file or directory。私はpickle.load(open('gs://my-bucket/path/to/pickle), 'rb')自分のデータを抽出するために使用しています。これは GCS でファイルを開く良い方法ではないと思いますが、私は Google Cloud にまったく慣れていないため、適切な方法が見つかりません。

また、入力データに TFRecords または CSV 形式を使用する必要があることを読みましたが、私の方法が機能しなかった理由がわかりません。行列の密な表現は大きすぎてメモリに収まらないため、CSV は除外されます。TFRecords はそのようなまばらなデータを効率的にエンコードできますか? pickle ファイルからデータを読み取ることは可能ですか?

4

1 に答える 1

5

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 に限定されるものではなく、自分に合ったデータ形式を使用することを歓迎します (その主張をしているドキュメントの場所を指摘してもよろしいですか?)。データがメモリに収まる場合、あなたのアプローチは賢明です。

データがメモリに収まらない場合は、CSV または TFRecords が最も便利な TensorFlow のリーダー フレームワークを使用する可能性があります。TFRecord は単なるバイト文字列のコンテナです。最も一般的には、スパース データをサポートするシリアル化されたtf.Exampleデータが含まれます (基本的にはマップです)。tf.Example データの解析の詳細については、 tf.parse_exampleを参照してください。

于 2016-10-19T15:27:07.787 に答える