クラスや関数の定義や使うときの()のルール
クラス名()(x)といった書き方ってなぜするのですか。
ゼロから作るDeep Learning3の1文です。
class Transpose(Function): def forward(self,x): y=np.transpose(x) return y def backward(self,gy): gx=transpose(y) return gx def transpose(x): return Transpose()(x)
とりあえずなれるところから始めようと思い、今まであまり気にしてなかったのですが、
上のコードの最後の
return Transpose()(x)
についてなぜこのような書き方をするのでしょうか。
Transpose(x)やTransposeじゃないのはなぜでしょうか。
pythonの基礎かもしれませんが、意外と基礎本でも触れられていないので気になっています。
そういうルールだからといえばそうなんでしょうが、例えば
x0 = Variable(np.array(1.0)) x1 = Variable(np.array(1.0)) t = add(x0, x1) y = add(x0, t) y.backward()
の最後のコード
y.backward()
のように(x)がつかないこともあるのでルールを整理したいです。
詳しい方教えてください。
わかりやすいサイトの案内でも大丈夫です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/05 08:06