2

attr のパッケージは、モジュールに対する pytorch のparameter()メソッドを何らかの形で台無しにします。2 つのパッケージをシームレスに統合できるように、誰かが回避策や解決策を持っているかどうか疑問に思っていますか?

そうでない場合、問題を投稿する github に関するアドバイスはありますか? 私の本能はこれを attr の github に投稿することですが、スタック トレースは pytorch のコードベースにほぼ完全に関連しています。

Python 3.7.3
attrs== 19.1.0
torch==1.1.0.post2
torchvision==0.3.0
import attr
import torch


class RegularModule(torch.nn.Module):
    pass

@attr.s
class AttrsModule(torch.nn.Module):
    pass


module = RegularModule()
print(list(module.parameters()))

module = AttrsModule()
print(list(module.parameters()))

実際の出力は次のとおりです。

$python attrs_pytorch.py
[]
Traceback (most recent call last):
  File "attrs_pytorch.py", line 18, in <module>
    print(list(module.parameters()))
  File "/usr/local/anaconda3/envs/bgg/lib/python3.7/site-packages/torch/nn/modules/module.py", line 814, in parameters
    for name, param in self.named_parameters(recurse=recurse):
  File "/usr/local/anaconda3/envs/bgg/lib/python3.7/site-packages/torch/nn/modules/module.py", line 840, in named_parameters
    for elem in gen:
  File "/usr/local/anaconda3/envs/bgg/lib/python3.7/site-packages/torch/nn/modules/module.py", line 784, in _named_members
    for module_prefix, module in modules:
  File "/usr/local/anaconda3/envs/bgg/lib/python3.7/site-packages/torch/nn/modules/module.py", line 975, in named_modules
    if self not in memo:
TypeError: unhashable type: 'AttrsModule'

予想される出力は次のとおりです。

$python attrs_pytorch.py
[]
[]
4

2 に答える 2