「ゼロから作るDeep Learning ① (Pythonで学ぶディープラーニングの理論と実装)」 p.143~146の写経です。
Sigmoid層のpython実装
# coding: utf-8 import numpy as np def main(): sigmoid = Sigmoid() x = np.array( [[1.0, -0.5], [-2.0, 3.0]] ) # 準伝播 fwd = sigmoid.forward(x) print(fwd) # 逆伝播 back = sigmoid.backward(x) print(back) class Sigmoid: def __init__(self): self.out = None # https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/common/layers.py # にある Sigmoid は、未定義のsigmoid(x)を使用しており # 誤っている気がします。 # def forward(self, x): # out = sigmoid(x) # self.out = out # return out def forward(self, x): out = 1 / (1 + np.exp(-x)) self.out = out return out # forward()で算出したoutを保持し、再利用しています def backward(self, dout): dx = dout * (1.0 - self.out) * self.out return dx if __name__ == '__main__': main()