前提・実現したいこと
TFRecordでjpegを書き込んでから 読み込ませて表示したいのですがエラーが出て調べても解決策が見つからなかったので質問させていただきます
参考書にあるコードです
読み込みでエラーが出ていて原因がわかりません
発生している問題・エラーメッセージ
エラーメッセージ OutOfRangeError Traceback (most recent call last) ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args) 1349 try: -> 1350 return fn(*args) 1351 except errors.OpError as e: ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _run_fn(session, feed_dict, fetch_list, target_list, options, run_metadata) 1328 feed_dict, fetch_list, target_list, -> 1329 status, run_metadata) 1330 ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\framework\errors_impl.py in __exit__(self, type_arg, value_arg, traceback_arg) 472 compat.as_text(c_api.TF_Message(self.status.status)), --> 473 c_api.TF_GetCode(self.status.status)) 474 # Delete the underlying status object from memory otherwise it stays alive OutOfRangeError: End of sequence [[Node: IteratorGetNext_4 = IteratorGetNext[output_shapes=[[?,?,?]], output_types=[DT_UINT8], _device="/job:localhost/replica:0/task:0/device:CPU:0"](OneShotIterator_4)]] During handling of the above exception, another exception occurred: OutOfRangeError Traceback (most recent call last) <ipython-input-11-fa952844f0a8> in <module>() 2 with tf.Session() as sess: 3 #データセットから画像を1件取得 ----> 4 jpeg_img = sess.run(next_element) 5 #scikit-imageで表示 6 io.imshow(jpeg_img) ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata) 893 try: 894 result = self._run(None, fetches, feed_dict, options_ptr, --> 895 run_metadata_ptr) 896 if run_metadata: 897 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata) 1126 if final_fetches or final_targets or (handle and feed_dict_tensor): 1127 results = self._do_run(handle, final_targets, final_fetches, -> 1128 feed_dict_tensor, options, run_metadata) 1129 else: 1130 results = [] ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata) 1342 if handle is None: 1343 return self._do_call(_run_fn, self._session, feeds, fetches, targets, -> 1344 options, run_metadata) 1345 else: 1346 return self._do_call(_prun_fn, self._session, handle, feeds, fetches) ~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\client\session.py in _do_call(self, fn, *args) 1361 except KeyError: 1362 pass -> 1363 raise type(e)(node_def, op, message) 1364 1365 def _extend_graph(self): OutOfRangeError: End of sequence [[Node: IteratorGetNext_4 = IteratorGetNext[output_shapes=[[?,?,?]], output_types=[DT_UINT8], _device="/job:localhost/replica:0/task:0/device:CPU:0"](OneShotIterator_4)]]
該当のソースコード
#書き込み import glob import tensorflow as tf import os img_list=[i for i in glob.glob('img/*.jpg')] with tf.python_io.TFRecordWriter('test.tfrecord')as w: for img in img_list: with tf.gfile.FastGFile(img,'rb')as f: data=f.read() freatures=tf.train.Features(feature={ "data":tf.train.Feature(byte_list=tf.train.BytesList(value=[data])) }) example=tf.train.Example(features=features) w.write(example.SerializeToString()) #読み込み import tensorflow as tf from skimage import io def parse(example): #TFRecordをパース features = tf.parse_single_example( example, features={ 'data': tf.FixedLenFeature([], dtype=tf.string) }) #バイト列のままになっているので元の画像の形式に変換 img = features['data'] img = tf.image.decode_jpeg(img) return img #TFRecordファイルを読み込みパース用の関数を適用 dataset = tf.data.TFRecordDataset(['test.tfrecord']).map(parse) #データセットを1周するイテレータ iterator = dataset.make_one_shot_iterator() #イテレータから要素を取得 next_element = iterator.get_next() with tf.Session() as sess: #データセットから画像を1件取得 jpeg_img = sess.run(next_element) #scikit-imageで表示 io.imshow(jpeg_img) io.show()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/15 10:48