私のプロジェクトでは、大量のデータがあり、約60GBがnpyファイルに広がり、それぞれ約1GBを持ち、それぞれに約750kのレコードとラベルが含まれています。テンソルフローで大量のデータを扱うにはどうすればよいですか?
各レコードは345 float32で、ラベルは5 float32です。
テンソルフローのデータセットとキュー/スレッドのドキュメントも読みましたが、トレーニングの入力をどのように処理するのか、将来の予測のためにモデルとウェイトを保存する方法を理解できません。
私のモデルは非常に簡単です、それは次のようになります。
x = tf.placeholder(tf.float32, [None, 345], name='x')
y = tf.placeholder(tf.float32, [None, 5], name='y')
wi, bi = weight_and_bias(345, 2048)
hidden_fc = tf.nn.sigmoid(tf.matmul(x, wi) + bi)
wo, bo = weight_and_bias(2048, 5)
out_fc = tf.nn.sigmoid(tf.matmul(hidden_fc, wo) + bo)
loss = tf.reduce_mean(tf.squared_difference(y, out_fc))
train_op = tf.train.AdamOptimizer().minimize(loss)
私は私のニューラルネットはにシャッフルnumpyのアレイを使用して、その後、ランダムな順序で一度にファイル1を読んでいた訓練された方法各ファイルのインデックスを作成し、feed_dict
を使用してtrain_op
をフィードする各バッチを手動で作成します。私はこれを読んだすべてのものは非常に非効率的で、何とかデータセットやキューやスレッドで置き換える必要がありますが、ドキュメントは役に立たないと言っていました。
したがって、テンソルフローで大量のデータを処理する最良の方法は何ですか?
また、参考のために、私のデータは、2の操作ステップでnumpyのファイルに保存されました:
with open('datafile1.npy', 'wb') as fp:
np.save(data, fp)
np.save(labels, fp)
これはおそらく正確にあなたが探しているものです:[データセット(データセットAPI付き)](https://www.tensorflow.org/programmers_guide/datasets) –
大きなデータセットでは、それはすぐに。ミニバッチを使ってそれを克服してください。しかし、それを超えて、すべてのものを最初の場所に持ってこないでください。ミニバッチを使用してください。 –
Karhy、私はデータセットのドキュメントを読んだが、そのほとんどはデータがメモリにプリロードされていると思われるようだ。 Paramdeep、私はミニバッチを使用しています。これはnumpyファイルからデータをロードした後、後でデータをシャッフルして、手動でミニバッチを実行してxとyのプレースホルダに送ります。これが私がより効率的なやり方でやり遂げる方法を見つけようとしているところです。 –