Tensorflow在Windows环境下Print错误解决方案

问题: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哪个能够正确有效地解决这个问题,需要进一步确认

你可能感兴趣的:(Tensorflow在Windows环境下Print错误解决方案)