问题:Tensorflow在Windows环境下,不仅是PowerShell,还是CMD以及Visual Studio Code,执行时,会出现Print的输出错误:
oserror: raw write() returned invalid length... ...
错误的原因可能是由于Windows自身的Unicode中存在的Bug所造成,参考以下文章:
https://stackoverflow.com/questions/47356993/oserror-raw-write-returned-invalid-length-when-using-print-in-python
https://github.com/Microsoft/vscode/issues/39149#issuecomment-347260954
解决问题的方案:
方案A:在运行深度学习的循环训练程序代码中,不使用Print输出当前学习的状态,而是将学习的状态信息,利用文件写入的形式,写到csv文件当中,例如:
file = open("record.csv", "w")
file.write("iter,total_loss,rpn_loss_cls,rpn_loss_box,loss_cls,loss_box")
while.......
......
if iter % (cfg.FLAGS.display) == 0:
file.write("%d,%f,%f,%f,%f,%f\n" % (iter, total_loss, rpn_loss_cls, rpn_loss_box, loss_cls, loss_box))
file.close()
方案B:anaconda环境执行编程好的Python深度学习程序,原因是根据问题报告,只有CMD,PowerShell以及Visual Studio Code的Windows原生编程以及程序执行环境才会出现这个问题
方案A与方案B哪个能够正确有效地解决这个问题,需要进一步确认