当我运行代码时,出现如下错误:
File "data2record.py", line 120, in <module>
run()
File "data2record.py", line 114, in run
image_data, shape, bbox, label ,imname= _processing_image(wordbb, imname,coder)
File "data2record.py", line 64, in _processing_image
image_data = tf.gfile.GFile(FLAGS.datasets + imname, 'r').read()
File "/home/tian/.local/lib/python3.5/site-packages/tensorflow/python/lib/io/file_io.py", line 125, in read
pywrap_tensorflow.ReadFromStream(self._read_buf, length, status))
File "/home/tian/.local/lib/python3.5/site-packages/tensorflow/python/lib/io/file_io.py", line 93, in _prepare_value
return compat.as_str_any(val)
File "/home/tian/.local/lib/python3.5/site-packages/tensorflow/python/util/compat.py", line 106, in as_str_any
return as_str(value)
File "/home/tian/.local/lib/python3.5/site-packages/tensorflow/python/util/compat.py", line 84, in as_text
return bytes_or_text.decode(encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
我的代码中的错误行是:
...
image_data = tf.gfile.GFile(FLAGS.datasets + imname, 'r').read()
image = coder.decode_jpeg(image_data)
...
我的tensorflow是1.3而python是3.5。并且此代码可以在tensorflow 1.0,python 2.7中运行。为什么它不能在tensorflow是1.3和python 3.5中运行?
代码在以下位置的datasets / data2record.py中:
有人可以帮我吗?
最佳答案
就像错误所说的那样,因为它试图将文件数据解码为unicode并失败。
更改行:image_data = tf.gfile.GFile(FLAGS.datasets + imname, 'r').read()
至:image_data = tf.gfile.GFile(FLAGS.datasets + imname, 'rb').read()
以二进制模式读取文件。它在Py2中工作,因为默认情况下str是字节字符串,而在Py3中它是unicode字符串,因此在文本模式下读取文件时需要解码。
关于python - tensorflow:“tf.gfile.GFile”中带有“'utf-8'编解码器的内容无法解码...”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45882520/