当我运行我的代码时,我得到如下错误:
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)
...
我的张量流为1.3,python为3.5。此代码可以在tensorflow 1.0,python 2.7中运行。为什么它不能在tensorflow中运行是1.3而python是3.5? 代码位于:https://github.com/xiaodiu2010/TextBoxes-TensorFlow中的datasets / data2record.py中 有人可以帮助我吗?
答案 0 :(得分:2)
就像错误所说的那样,因为它试图将文件数据解码为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字符串,因此在文本模式下读取文件时需要解码。