2016-07-19 10 views
1

私の目標は、一定数のエポックやステップのためにニューラルネットを訓練することです。私は各ステップで.tfrecordsファイルの特定のサイズのデータ​​を使用したいと思います。TensorFlowの特定のレコードを.tfrecordsファイルから選択するにはどうすればよいですか?

は現在、私はこのループを使用してファイルから読んでいます:

i = 0 
data = np.empty(shape=[x,y]) 

for serialized_example in tf.python_io.tf_record_iterator(filename): 

    example = tf.train.Example() 
    example.ParseFromString(serialized_example) 

    Labels = example.features.feature['Labels'].byte_list.value 
    # Some more features here 

    data[i-1] = [Labels[0], # more features here] 

    if i == 3: 
     break 
    i = i + 1 

print data # do some stuff etc. 

私は、Pythonのnoobのビット、と私はループの外で「I」を作成し、それが一定に達したときに飛び出していることを疑います価値はちょうどハックな言葉です。

ファイルからデータを読み込むことはできますが、「ラベル機能に含まれるbyte_listの最初の100個の値を欲しい」と指定し、その後「次の100個の値を欲しい」と指定します。

私がよく慣れていないことは、このような方法でファイルをループすることです。ループをどのように操作するのかはわかりません。

ありがとうございました。

+0

あなたは 'enumerate()'を試すことができます:http://stackoverflow.com/questions/522563/accessing-the-index-in-python-for-loops –

答えて

1

不可能です。 TFRecordsはストリーミングリーダであり、ランダムアクセスはありません。

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

+0

答えをありがとう。私はこの種の形式についてもっと知るためにどこかを教えてもらえますか?ほとんど私はそれが何のために有用かもしれないか分かりません。 – Charmander35

+0

ここ:https://github.com/tensorflow/tensorflow/issues/1749。 – TimZaman

関連する問題