2016-11-07 11 views
9

.tfrecordsファイルからのレコードの合計数を取得できますか?これに関連して、モデルをトレーニングしている間に経過したエポックの数を一般的にどのように追跡していますか? batch_sizenum_of_epochsを指定することは可能ですが、current epoch、epochあたりのバッチ数などの値を取得するのが簡単かどうかはわかりません。トレーニングの進行状況をより詳細に制御できるようになります。現在のところ、私は自分の.tfrecordsファイルにいくつのレコードがあるのか​​、ミニバッチのサイズを手前で知っているので、これを計算するために汚れたハックを使用しています。Tensorflowの.tfrecordsファイルからのレコードの総数の取得

答えて

12

レコードの数をカウントするには、tf.python_io.tf_record_iteratorを使用できるはずです。

モデルトレーニングを追跡するだけで、tensorboardが便利です。

+0

ありがとうございました!使用することができる.tfrecordsファイルに保存されているメタデータがあるかどうか疑問に思っていました(現在のエポックを知りたい場合は、テンソルボードから検索することができます)。 rの総数'tf_python_io.tf_record_iterator()'関数を使ってデータセット全体を反復するのではなく、 – user1050648

+1

残念ながら、tfrecordsファイルにはメタデータがありません。各レコードの先頭にはサイズ(uint64 length、uint32 crc)がありますが、圧縮されたストリームの中にあるので、すべてを解凍する必要があります。したがって、この情報を得る良い方法はありません。 – drpng

+0

もう一度ありがとう! – user1050648

7

不可能です。 TFRecordは、内部に格納されているデータに関するメタデータを格納しません。このファイル

は、(バイナリ)文字列のシーケンスを表します。フォーマットはランダム アクセスではないため、大量のデータをストリーミングするのに適していますが、高速シャーディングやその他の非シーケンシャルアクセスが必要な場合は には適しません。

sum(1 for _ in tf.python_io.tf_record_iterator(file_name)) 

あなたの場合:あなたがしたい場合

、手動でこのメタデータを保存したり、数を取得するためにrecord_iteratorを使用することができます(あなたが持っているすべてのレコードを反復処理する必要があります。

関連する問題