2017-11-17 5 views
3

私はpythonテンソルを使用して、モデルを訓練してpythonでイメージを認識しています。以下はgithubOSError:pythonでprint()を使用すると、raw write()が無効な長さを返しました

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) 

からtrain.pyを実行しようとしたときしかし、私はそのbottleneck_pathがされるように、ファイル名を削減しようとした

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) 

create_bottleneck_file()のコード以下のエラーが発生しているそうです小さい値だが、うまくいかなかった。私はこのエラーをオンラインで検索しようとしましたが、役に立たないものは何も見つかりませんでした。あなたはこの問題への修正がある場合は私に知らせてください

+1

問題はあなたがWindows上でアプリケーションを実行していると思いますが、コードはLinuxまたはMac OS用です。行338で 'print(bottleneck_path)'を実行すると、出力はどうなりますか? – MatthewScarpino

+0

私はcmdが動作していたときにcmdをやり取りしたと思います。おそらくこれが役立ちます。https://stackoverflow.com/questions/48371993/tqdm-crashes-on-windows-console-upon-accidental-mouse-keyboard-input/48374209# 48374209 –

答えて

9

私は、これはそれがたpowershell.exeとcmd.exeの両方で発生し、11月のクリエイター更新により導入された標準出力/標準エラー出力ストリーム上のバグだと思う

Windows 10 Version 1709(OS Build 16299.64)でのみ発生するようです。

mystring.encode("utf-8").decode("ascii")

https://github.com/Microsoft/vscode/issues/39149#issuecomment-347260954:私の推測では、それはユニコードrealtedされていることである

A(非常に)間に合わせの修正があなたのコンソールにのみ出力ASCIIにある(出力サイズは、二回予想の長さです)

5

あなたは、私のような3.6またはWindowsから移行win_unicode_consoleパッケージをインストールし、それをインポートし、それを有効にするには、スクリプトのbegginingで、この行を追加することができない場合:

win_unicode_console.enable() 

この問題は、この最新バージョンのために書き直されたテキスト出力を処理するための責任のコードとしてPython-3.6を事前に一般的に一意であるように思われます。これはまた、この問題のための修正が表示されない可能性が最も高いことを意味します。

出典:https://bugs.python.org/issue32245

0

答えを@AMSAntiagoために、よりを追加します。 win_unicode_console.enable()を実行できます。しかし、すべてのファイルでそれを使用する代わりに、すべてのPython呼び出し(docs)で実行することができます。それは私のために働く。

関連する問題