質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

998閲覧

TFRecordで読み込み End of sequenceのエラーの意味が知りたいです

moviethief319

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/03/17 09:51

編集2018/03/18 12:58

前提・実現したいこと

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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一応確認ですが、
img_list=[i for i in glob.glob('img/*.jpg')]は空ではなく、
test.tfrecordには何かが書き込まれていること、
を確認しましたか?

また、このAPIはTensorflow v1.4まではバグっている可能性が高いです。
https://github.com/tensorflow/tensorflow/issues/12414
v1.5以上を使っていますか?

投稿2018/03/18 17:46

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

moviethief319

2018/04/15 10:48

アップデートしたら順調にいきました ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問