一.錯誤:
使用pytorch搭建GCN網絡時遇到錯誤:Expected object of scalar type Long but got scalar type Float for argument #2 ‘target’
二.原因及解決方法:
這句話表面上是說需要Long類型,我提供給他的是float類型,然後我把所有的變量都變成了long,發現還是不對。後來我把輸入和輸出x和y變成了float,因為我使用的是GCN網絡,輸入的邊的鄰接矩陣變成long,發現正确了。将float類型的tensor轉換為long類型的編碼如下:
labels = labels.to(device=device, dtype=torch.int64)
如何labels是dataframe格式的,那麼轉換為long型的tensor的格式的程式設計如下:
labels=torch.tensor(labels, dtype=torch.long)
遇到這種問題一定要靜下心來檢查自己各種變量的資料類型,不一定非得是float沒有變成long,重要的是看類型是否符合邏輯。
參考連結:
https://discuss.pytorch.org/t/expected-object-of-scalar-type-long-but-got-scalar-type-float-for-argument-2-target/33102