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が小さな値になるようにファイル名を減らしてみましたが、機能しませんでした。このエラーをオンラインで検索しようとしたが、何も役に立たなかった。この問題を修正するかどうかをお知らせください
3.6に、または私のようなWindowsから移行できない場合は、win_unicode_consoleパッケージをインストールしてインポートし、この行をスクリプトの冒頭に追加しますそれを有効にする:
win_unicode_console.enable()
テキスト出力の処理を担当するコードがこの最新バージョン用に書き直されたため、この問題は一般に3.6より前のバージョンに固有のようですPythonこの問題。
これは、11月のクリエーターアップデートによって導入されたstdout/stderrストリームのバグだと思います。powershell.exeとcmd.exeの両方で発生します
Windows 10バージョン1709(OSビルド16299.64)でのみ発生するようです。私の推測では、それはユニコードで実現されています(出力サイズはtwice予想される長さです)
(非常に)速くて汚い修正は、コンソールにASCIIのみを出力することです:
mystring.encode("utf-8").decode("ascii")
https://github.com/Microsoft/vscode/issues/39149#issuecomment-347260954
@AMSAntiagoの回答にさらに追加します。 win_unicode_console.enable()を実行できます。しかし、すべてのファイルで使用する代わりに、すべてのPython呼び出し( docs )で実行できます。