ドットを使ったメソッドの使い方が知りたい
ゼロから作るDeep Learning3という本を読んでpythonの勉強をしている初心者です。
メソッド(self,func)とfunc.メソッド(self)は同義ですか。
メソッドの使い方を教えてほしいです。下記が勉強しているコードです。
コード
class Variable: def __init__(self, data): self.data = data self.grad = None self.creator = None def set_creator(self, func): self.creator = func def backward(self): f = self.creator # 1. Get a function if f is not None: x = f.input # 2. Get the function's input x.grad = f.backward(self.grad) # 3. Call the function's backward x.backward() class Function: def __call__(self, input): x = input.data y = self.forward(x) output = Variable(y) output.set_creator(self) # Set parent(function) self.input = input self.output = output # Set output return output def forward(self, x): raise NotImplementedError() def backward(self, gy): raise NotImplementedError() class Square(Function): def forward(self, x): y = x ** 2 return y def backward(self, gy): x = self.input.data gx = 2 * x * gy return gx class Exp(Function): def forward(self, x): y = np.exp(x) return y def backward(self, gy): x = self.input.data gx = np.exp(x) * gy return gx A = Square() B = Exp() C = Square() x = Variable(np.array(0.5)) a = A(x) b = B(a) y = C(b) # backward y.grad = np.array(1.0) y.backward() print(x.grad)
質問の本題
Functionクラスの
output.set_creator(self)
について質問したいです。
メソッドの定義では
set_creator(self, func)
としていましたが、実行するときには
output.set_creator(self)
です。これはfunctionにoutputを代入した
set_creator(self,output)
という意味になるのでしょうか。
ドットの意味を理解しきれていなく教えてほしいです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/05 13:22