ディープラーニング

【python】1日30分のディープラーニング -19日目- ~ニュートラルネットワークの実装~

ニュートラルネットワーク(回帰)の実装

今回は以下の図のような入力層2,中間層2,出力層1の3層で作成していきます。
また中間層には活性化関数のシグモイド関数、出力層には恒等関数を使用しています。

  • 入力層の数が2,中間層の数が2なので中間層には$2*2 = 4$個の重みが必要
  • 中間層の数が2,出力層の数が2なので$2*1 = 2$個の重みが必要
  • バイアスの数はニューロンの数に等しい

コード一覧

import numpy as np
import matplotlib.pyplot as plt


X = np.arange(-1.0,1.0,0.2)  #X.length = 10
Y = np.arange(-1.0,1.0,0.2) 

Z= np.zeros((10,10)) #10*10のグリッドを生成


#重みの設定
w_middle = np.array([[4.0, 4.0],
                                     [4.0, 4.0]])  #中間層 2*2

w_out = np.array([[1.0],
                                [-1.0]]) #出力層 2*1

#バイアスの設定
b_middle = np.array([3.0, -3.0]) #中間層
b_out = np.array(0.1) #出力層


#中間層 シグモイド関数
#引数 input値、重み、バイアス
def middle(x, w, b):
    u = np.dot(x,w) + b
    return 1/(1+np.exp(-u))

#出力層 恒等関数
def output(x,w,b):
    u = np.dot(x,w) + b
    return u


for i in range(10):
    for j in range(10):
        
        inp = np.array([X[i], Y[j]])
        mid = middle(inp, w_middle, b_middle)
        out = output(mid, w_out, b_out)
        
        Z[j][i] = out[0]
        
        
plt.imshow(Z, "gray", vmin=0.0, vmax=1.0)
plt.colorbar()
plt.show()