質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2722閲覧

pytorchのrandn()について

xgb

総合スコア33

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/01/04 09:47

###pytorchのrandn()について
pytorchのrandn()の振る舞いがよくわかりません。
乱数のテンソルを作る際にtorch.randn(1, 2, 3)のように使われると思いますが、
公式ドキュメントではいくつかの箇所で(torch.randn((1, 2, 3))のように、カッコ内に
更にカッコでくくるケースを見かけます。
これはズバリどのような意図でしょうか?

次元数をコントロールしているかと思いきや、両方の記述で同じ次元数のようです

py

1import torch 2a = torch.randn(1, 2, 3).shape 3b = torch.randn((1, 2, 3)).shape 4a == b 5 6>>>True

ご存知でしたらご教授いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

※追記

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/04 12:38

編集2018/01/05 10:37
yosider

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xgb

2018/01/05 01:09

ご回答ありがとうございます! なるほどそのような意図なんですね、勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問