※追記
randn(*sizes)という定義では,randnが可変長引数を取れるようにはなるものの,それは
randn(3)
randn(3,2)
randn(3,2,4)
などを可能にするだけであり,
randn((3,2))
などはやはりエラーになるはずです.
従って下の説明では不十分と思います.
公式レポジトリの関連するissueに,long_args なるパラメータに関する言及があるので,それが関わっていそうです.
残念ながら私はpytorchに明るくないので詳しいことはわかりかねます.
申し訳ありません.
(追記終わり)
Pythonでは,数字をカッコで括ると,タプルという別のオブジェクトになります.
従って,ふつう randn(1,2,3) と randn((1,2,3)) は両立しません.(一方はエラーになります.)
公式ドキュメントによると,
torch.randn(*sizes, out=None) → Tensor
とあります.
すなわち,randnは可変長引数sizesとオプション引数outをとりTensorを返す関数です.
Pythonにおいて*は乗算のほかにunpack(分解)にも用いられます.
python3
1>>> a, *b = 1,2,3,4,5
2>>> a
31
4>>> b
5[2, 3, 4, 5]
python3
1>>> print(1,2,3)
21 2 3
3>>> print((1,2,3))
4(1, 2, 3)
5>>> print(*(1,2,3))
61 2 3
このように定義すれば randn(1,2,3) と randn((1,2,3)) を両立させることができます.
pytorchを使ったことがないのでよくわかりませんが,意図としては
どちらの引数でもエラーにならないため,ユーザーが好きなほうを使えるようにした,という感じでしょうか.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/05 01:09