pytorchの実践ではmodule'torch'has no attribute'form_numpy'問題の解決
2687 ワード
最近pytorchをじっくりプレイしてみましたが、バグが入っているのに気づくまで気づかなかったです.
torchの最も基本的な例をテストする場合、pytorchがnumpyをTensorに変換できないという問題に遭遇しました.
この問題については、ネット上で対応する解決策を探すのは難しい.そこでこの問題の解決策を書きます.
torchのホームページには、このような言葉があり、よく分析してから意味が分かりました.
Pylint isn't picking up that
自体、pytorchにはfrom_が直接含まれていません.numpyという方法は、_Cのようなネーミングスペースが呼び出されます.
従って.Cの方法でテストを行ったが、やはり合格した.
コードの大部分は直接torchですfrom_numpyのメソッドは、コードごとに直接追加されます.Cの方式は信頼できない.
同時にこのような話を見て、pylinのツールがあることに気づいた.
そこでこのツールを再インストールします.
原因を分析すると、pytorchのインストール時間がpylintより遅いため、前のpylintがこのパッケージに更新されていない可能性があります.
torchの最も基本的な例をテストする場合、pytorchがnumpyをTensorに変換できないという問題に遭遇しました.
ndscbigdata@ndscbigdata:~/work/change/AI$ python
Python 3.6.1 (default, Jul 14 2017, 17:08:44)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import numpy as np
>>> a = np.ones(5)
>>> a
array([ 1., 1., 1., 1., 1.])
>>> b=torch.form_numpy(a)
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'torch' has no attribute 'form_numpy'
>>> print(torch.__version__)
0.2.0_3
この問題については、ネット上で対応する解決策を探すのは難しい.そこでこの問題の解決策を書きます.
torchのホームページには、このような言葉があり、よく分析してから意味が分かりました.
Pylint isn't picking up that
torch
has the member function from_numpy
. It's because torch.from_numpy
is actually torch._C.from_numpy
as far as Pylint is concerned. 自体、pytorchにはfrom_が直接含まれていません.numpyという方法は、_Cのようなネーミングスペースが呼び出されます.
従って.Cの方法でテストを行ったが、やはり合格した.
>>> b=torch.form_numpy(a)
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'torch' has no attribute 'form_numpy'
>>> print(torch.__version__)
0.2.0_3
>>> c = torch.Tensor(3,3)
>>> c
1.00000e-32 *
-4.4495 0.0000 0.0000
0.0000 0.0000 0.0000
0.0000 0.0000 0.0000
[torch.FloatTensor of size 3x3]
>>> b = torch._C.from_numpy(a)
>>> b
1
1
1
1
1
[torch.DoubleTensor of size 5]
コードの大部分は直接torchですfrom_numpyのメソッドは、コードごとに直接追加されます.Cの方式は信頼できない.
For reference, you can have Pylint ignore these by wrapping "problematic" calls with the following comments.
# pylint: disable=E1101
tensor = torch.from_numpy(np_array)
# pylint: enable=E1101
同時にこのような話を見て、pylinのツールがあることに気づいた.
そこでこのツールを再インストールします.
pip install pylint
それからテストしてみると、正常です.ndscbigdata@ndscbigdata:~/work/change/AI$ python
Python 3.6.1 (default, Jul 14 2017, 17:08:44)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> import numpy as np
>>> a = np.ones(5)
>>> b=torch.from_numpy(a)
>>> b
1
1
1
1
1
[torch.DoubleTensor of size 5]
>>>
原因を分析すると、pytorchのインストール時間がpylintより遅いため、前のpylintがこのパッケージに更新されていない可能性があります.