H

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点を意識して、自分は書いている。かも。