2017-09-01 13 views
1

私はtfrecordsファイルの作成とtfrecordsからのデータの読み取りに取り組んでいます。 tfrecordsには2つの機能、ビッビッドと長さがあります。TFRコードから読み取ったときにデータが失われました

tfrecordsを作成します。

writer = tf.python_io.TFRecordWriter(filename + '_Squence.tfrecords') 
example = tf.train.Example(features=tf.train.Features(
    feature={ 
     'vehicleid': tf.train.Feature(int64_list=tf.train.Int64List(value=[vehicleid])), 
     'length': tf.train.Feature(int64_list=tf.train.Int64List(value=[length])) 

    })) 
writer.write(example.SerializeToString()) 
writer.close() 

はtfrecordsをお読みください。

filepath = filename + "_Squence.tfrecords" 
filename_queue = tf.train.string_input_producer([filepath]) 
reader = tf.TFRecordReader() 
_, serialized_example = reader.read(filename_queue) # return filename and file 
features = tf.parse_single_example(serialized_example, features={ 
    'vehicleid': tf.FixedLenFeature([], tf.int64), 
    'length': tf.FixedLenFeature([], tf.int64) 
    }) 

vehicleid = tf.cast(features["vehicleid"], tf.int64) 
length = tf.cast(features["length"], tf.int64) 
return vehicleid, length 

しかし、私は、コードをデバッグするとき、私はいくつかのデータが失われます。例えば 、Iはtfrecordsファイルにこの二つの例

[vehicleid = A、frameIDの= B]、 [vehicleid = C、frameIDの= D]

を送信する場合、私は、データを読み出す際に、私は意志このようなデータを得る

[vehicleid = a、frameid = d]

データが失われました。

誰かがこの問題を解決するのに手伝ってくれますか?どうもありがとうございました。

答えて

1

tf.train.string_input_producer([filepath])はキューを返します。 reader.read(filename_queue)を使用するたびに、キューの最後の最初の要素が返されます。 reader.readを2回目に実行すると、2番目の要素が返されます。

あなたは要素のバッチに到達したい場合は、tf.train.batch.

への入力としてキューの出力と tf.train.batchを使用することができます
関連する問題