tensorflowで非同期処理しようとしたらエラーでハマった。
対処法を探したが見つからなかったので誰かの参考になればと思います。
現象
以下のコードを実行するとtf.train.start_queue_runners()
でエラーが発生する
filename_queue = tf.train.string_input_producer(["../dataset/sample1.tfrecord"])
reader = tf.TextLineReader()
// ... 略
with tf.Session() as sess:
# 入力 enqueue スレッド開始
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
[実行結果]
Process finished with exit code -1073741819 (0xC0000005)
原因
ファイルパスの参照先が間違っていた。
(誤)filename_queue = tf.train.string_input_producer(["../dataset/sample1.tfrecord"])
(正)filename_queue = tf.train.string_input_producer(["../dataset/samples/sample1.tfrecord"])
凡ミスだが地味にハマった。
tf.train.string_input_producer()
でエラーが出てくれればいいのに…。
0xC0000005
がそもそもメモリアクセス違反系のエラーなのでファイルなどの参照周りをまず怪しむべき。
(参考)Tensorflowで非同期処理
以下の記事がわかりやすい。
https://qiita.com/antimon2/items/c7d2285d34728557e81d
https://qiita.com/ashigirl966/items/99b0f8d9713ee90db13a