1. 程式人生 > >pytorch使用時,從使用spyder轉向pycharm過程中遇到的一些問題。

pytorch使用時,從使用spyder轉向pycharm過程中遇到的一些問題。

前言:

    之前一直使用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 的語法。