我正在使用python tensorflow训练模型来识别python中的图像。但是在尝试从github
执行train.py时遇到以下错误Traceback (most recent call last):
File "train.py", line 1023, in <module>
tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
File "C:\Users\sande\Anaconda3\envs\tensorflow\lib\site-
packages\tensorflow\python\platform\app.py", line 48, in run
_sys.exit(main(_sys.argv[:1] + flags_passthrough))
File "train.py", line 766, in main
bottleneck_tensor)
File "train.py", line 393, in cache_bottlenecks
jpeg_data_tensor, bottleneck_tensor)
File "train.py", line 341, in get_or_create_bottleneck
bottleneck_tensor)
File "train.py", line 290, in create_bottleneck_file
print('Creating bottleneck at ' + bottleneck_path)
OSError: raw write() returned invalid length 112 (should have been between 0
and 56)
以下是create_bottleneck_file()
的代码def create_bottleneck_file(bottleneck_path, image_lists, label_name, index,
image_dir, category, sess, jpeg_data_tensor,
bottleneck_tensor):
"""Create a single bottleneck file."""
print('Creating bottleneck at ' + bottleneck_path)
image_path = get_image_path(image_lists, label_name, index,
image_dir, category)
if not gfile.Exists(image_path):
tf.logging.fatal('File does not exist %s', image_path)
image_data = gfile.FastGFile(image_path, 'rb').read()
try:
bottleneck_values = run_bottleneck_on_image(
sess, image_data, jpeg_data_tensor, bottleneck_tensor)
except:
raise RuntimeError('Error during processing file %s' % image_path)
bottleneck_string = ','.join(str(x) for x in bottleneck_values)
with open(bottleneck_path, 'w') as bottleneck_file:
bottleneck_file.write(bottleneck_string)
我尝试减少文件名,以便bottleneck_path是一个小值,但是没有用。我试图在网上搜索这个错误,但没有发现任何有用的东西。如果您对此问题有解决方法,请与我们联系
答案 0 :(得分:12)
如果您无法迁移到3.6或像我一样从Windows迁移,请安装 win_unicode_console 包,导入它并在脚本开始时添加此行以启用它:
win_unicode_console.enable()
这个问题似乎通常是3.6之前的Python所特有的,因为负责处理文本输出的代码被重写为最新版本。这也意味着我们很可能看不到解决此问题的方法。
答案 1 :(得分:3)
为@AMSAntiago答案添加更多内容。您可以运行win_unicode_console.enable()。但是,不是在每个文件上使用它,而是可以在每次Python调用(docs)上运行它。这对我有用。