pytorch使用時,從使用spyder轉向pycharm過程中遇到的一些問題。
阿新 • • 發佈:2019-01-03
前言:
之前一直使用spyder作為執行環境,但是隨著學習的深入,需要處理的程式越來越多,spyder的操作變得麻煩起來,是一款漸漸的無法滿足需求,與之形成鮮明德比,pycharm功能強大,是python開發的不二之選,於是從spyder轉向使用pycharm,但是在這過程中遇到了一些奇怪的問題。
用spyder執行torch(0.4.0版)官方mnist例項,執行正常,windows上的pycharm執行統一串程式碼卻無法執行,版本(pycharm-community-2018.1.2),(pycharm-community-2018.1.4),(pycharm-professional-2018.1.4)均無法執行,而ubuntu系統下的pycharm-community-2018.1卻能正常使用。
報錯:
1,執行mnist主程式,報錯:_jb_pytest_runner.py: error: unrecognized arguments,大概意思是,args = parser.parse_args()無法得到引數。
#只要將
args = parser.parse_args()
# 換成:
args, unknown = parser.parse_known_args()
#便可。
2,隨後出現新報錯:
UserWarning: volatile was removed and now has no effect. Use `with torch.no_grad():` instead. data, target = Variable(data, volatile=True), Variable(target) #和 UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number test_loss += F.nll_loss(output, target, size_average=False).data[0] # sum up batch loss
修改如下:
將:
data, target = Variable(data, volatile=True), Variable(target)
#和
test_loss += F.nll_loss(output, target, size_average=False).data[0] # sum up batch loss
分別修改為:
data, target = Variable(data), Variable(target) #和 test_loss += F.nll_loss(output, target, size_average=False).item() # sum up batch loss
原因分析:
可能是因為最新版pyhcarm提前進入了PyTorch 0.5 的要求。在排斥Torch 0.4.0 的語法。