Numpyでエポックを実装するときの設計思想
Numpyでニューラルネットワークの実装はあんまりないと思うけど。
Numpyでエポックを実装しようと思ったとき、配列の扱いをどうしようか悩むときがある。そんなときのための備忘録。
エポックをforで処理
エポックをforで実装する。
例えば一つのニューロンでANDを学習させようとすると、forを使って
for j in x: y.append(f(numpy.dot(x, w)))
というふうになる。ただこれはちょっと使いにくい。だから内包表記を使って、
y = [numpy.dot(j, w) for j in x]
と書く。こっちの方が早い。
Numpy.vectorize()という魔法
これはホントに便利。
ある配列uに関数f(u)を使いたい時、
y = numpy.array([f(i) for i in u])
となるが、
f = numpy.vectorize(f)
とするだけで、
y = f(u)
と書ける。
以上の2点を意識して、自分は書いている。かも。