2016-10-10 5 views
0

tf.image.decode_jpeg를 테스트하고 있는데 InvalidArgumentError가 있습니다. 어떻게이 문제를 해결할 수 있습니다 : 나는 Python2처럼 행동하게하기 위해, Python3을 사용하고 , 나는 "라틴어-1".. tf.image.decode_jpeg raise InvalidArgumentError

내 질문 = 인코딩을 추가?
import tensorflow as tf 

with open("/root/PycharmProjects/mscoco/train2014/COCO_train2014_000000291797.jpg", "r", encoding="latin-1") as f: 
    image = f.read() 

sess = tf.Session() 
result = sess.run(tf.image.decode_jpeg(image, channels=3)) 

는 오류입니다. 펠릭스에

Not a JPEG file: starts with 0xc3 0xbf 
Not a JPEG file: starts with 0xc3 0xbf 
Traceback (most recent call last): 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 965, in _do_call 
    return fn(*args) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 947, in _run_fn 
    status, run_metadata) 
    File "/usr/lib64/python3.4/contextlib.py", line 66, in __exit__ 
    next(self.gen) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/errors.py", line 450, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors.InvalidArgumentError: Invalid JPEG data, size 165886 
    [[Node: DecodeJpeg = DecodeJpeg[acceptable_fraction=1, channels=0, fancy_upscaling=true, ratio=1, try_recover_truncated=false, _device="/job:localhost/replica:0/task:0/cpu:0"](DecodeJpeg/contents)]] 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/root/PycharmProjects/mytf/models/im2txt/im2txt/data/test.py", line 7, in <module> 
    result = sess.run(tf.image.decode_jpeg(image)) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 710, in run 
    run_metadata_ptr) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 908, in _run 
    feed_dict_string, options, run_metadata) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 958, in _do_run 
    target_list, options, run_metadata) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 978, in _do_call 
    raise type(e)(node_def, op, message) 
tensorflow.python.framework.errors.InvalidArgumentError: Invalid JPEG data, size 165886 
    [[Node: DecodeJpeg = DecodeJpeg[acceptable_fraction=1, channels=0, fancy_upscaling=true, ratio=1, try_recover_truncated=false, _device="/job:localhost/replica:0/task:0/cpu:0"](DecodeJpeg/contents)]] 
Caused by op 'DecodeJpeg', defined at: 
    File "/root/PycharmProjects/mytf/models/im2txt/im2txt/data/test.py", line 7, in <module> 
    result = sess.run(tf.image.decode_jpeg(image)) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/ops/gen_image_ops.py", line 283, in decode_jpeg 
    name=name) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/op_def_library.py", line 703, in apply_op 
    op_def=op_def) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/ops.py", line 2317, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/ops.py", line 1239, in __init__ 
    self._traceback = _extract_stack() 


Process finished with exit code 1 

덕분에, 나는이 사용하는 자리 다시 시도

tf.read_file 사용하여 내 문제를 해결 : 을 그리고 이것은 내 코드입니다 :

import tensorflow as tf 

path = "/root/PycharmProjects/mscoco/train2014/COCO_train2014_000000291797.jpg" 

with open(path, "r", encoding="latin-1") as f: 
    image = f.read() 

encoded_jpeg = tf.placeholder(dtype=tf.string) 
decoded_jpeg = tf.image.decode_jpeg(encoded_jpeg, channels=3) 

sess = tf.InteractiveSession() 

sess.run(decoded_jpeg, feed_dict={encoded_jpeg: image}) 

그리고 다시 오류가 발생했습니다. 누구든지 해결 방법을 말해 줄 수 있습니까? 이번에는 텐서를 텐서에 공급할 수 없으므로 tf.read_file()을 사용할 수 없습니다. decode_jpg

Not a JPEG file: starts with 0xc3 0xbf 
Traceback (most recent call last): 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 965, in _do_call 
    return fn(*args) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 947, in _run_fn 
    status, run_metadata) 
    File "/usr/lib64/python3.4/contextlib.py", line 66, in __exit__ 
    next(self.gen) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/errors.py", line 450, in raise_exception_on_not_ok_status 
    pywrap_tensorflow.TF_GetCode(status)) 
tensorflow.python.framework.errors.InvalidArgumentError: Invalid JPEG data, size 165886 
    [[Node: DecodeJpeg = DecodeJpeg[acceptable_fraction=1, channels=3, fancy_upscaling=true, ratio=1, try_recover_truncated=false, _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_Placeholder_0)]] 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "/root/PycharmProjects/mytf/models/im2txt/im2txt/data/test.py", line 13, in <module> 
    sess.run(decoded_jpeg, feed_dict={encoded_jpeg: image}) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 710, in run 
    run_metadata_ptr) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 908, in _run 
    feed_dict_string, options, run_metadata) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 958, in _do_run 
    target_list, options, run_metadata) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/client/session.py", line 978, in _do_call 
    raise type(e)(node_def, op, message) 
tensorflow.python.framework.errors.InvalidArgumentError: Invalid JPEG data, size 165886 
    [[Node: DecodeJpeg = DecodeJpeg[acceptable_fraction=1, channels=3, fancy_upscaling=true, ratio=1, try_recover_truncated=false, _device="/job:localhost/replica:0/task:0/cpu:0"](_recv_Placeholder_0)]] 
Caused by op 'DecodeJpeg', defined at: 
    File "/root/PycharmProjects/mytf/models/im2txt/im2txt/data/test.py", line 9, in <module> 
    decoded_jpeg = tf.image.decode_jpeg(encoded_jpeg, channels=3) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/ops/gen_image_ops.py", line 283, in decode_jpeg 
    name=name) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/op_def_library.py", line 703, in apply_op 
    op_def=op_def) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/ops.py", line 2317, in create_op 
    original_op=self._default_original_op, op_def=op_def) 
    File "/usr/lib/python3.4/site-packages/tensorflow/python/framework/ops.py", line 1239, in __init__ 
    self._traceback = _extract_stack() 
+0

:

그래서, 당신은 이런 식으로 뭔가를해야합니까? 응답에 명시되지 않았기 때문에 확인하고 싶었습니다. – Steven

+0

그럼 어떻게이 문제를 해결할 수 있습니까? – chenfei

답변

2

입력 은 파일 내용 문자열 텐서이다 (여기에 API 참조) 파이썬의 read() 아닌 결과. 인코딩 부분을 추가하지 않고 그것은 실행

file_contents = tf.read_file(filename) 
image = tf.image.decode_jpeg(image, channels=3) 
+0

와우. 내 문제가 해결되었습니다. 고맙습니다! – chenfei

+0

tf.placeholder를 사용하려고했는데 encoded_jpeg에 어떻게 피드해야합니까? – chenfei

관련 문제