삽질 노트
Tensorflow에서 inception으로 transfer learning을 하다가 retrain 할 때 오류 나는 상황
bottleneck file을 열심히 만들다가 중간에 이런 error를 뱉으면서 멈추는데..
"tensorflow.python.framework.errors_impl.InvalidArgumentError: Invalid JPEG data, size 547255"
https://github.com/tensorflow/models/issues/597
https://github.com/tensorflow/models/issues/1700
구글링 해서 이곳을 참고해봤는데, 특정 JPG(JPEG) 파일이 깨졌을 가능성이 있으므로, TF를 minimal로 수행하는 코드를 진행해보라고 하심.
import tensorflow as tf
import glob, os.path
for i, image_name in enumerate(glob.glob(os.path.join('C:/Users/kmbmjn/Downloads/test2/cat_photos/true', '*.jpg'))):
print(i, image_name)
with tf.Graph().as_default():
image_contents = tf.read_file(image_name)
image = tf.image.decode_jpeg(image_contents, channels=3)
# init_op = tf.initialize_all_tables()
with tf.Session() as sess:
# sess.run(init_op)
sess.run(tf.global_variables_initializer())
tmp = sess.run(image)
그냥 JPG 한번 읽어서 decode 하고 session 한번 돌려주는 코드임.
os.path.join에 있는 경로는 본인 경로에 맞게 설정하고, initializer()는 TF 버전에서 권장하는 걸로 설정.
역시나 깨진 파일이 2개 있었다.. 이것들을 빼고 진행해보면,
야호 잘된다!
이런 오류가 잘 없는 거겠지만, 왠지 국내엔 이걸 정리해둔 곳이 없는 것 같아서 일단 여기에 정리해둠.
실제 머신러닝은 dataset 이슈가 많다는 걸 다시금 느낍니다.