AI E資格

ラビットチャレンジでE資格に挑戦 23日目

何にもしなかった3日間の遅れを取り戻すべく
頑張った気がする。

ラビットチャレンジ 超AI入門講座chapter3の続きを視聴した。
Pythonのコードが理解できない。。。

なんで、y[j]なんだろ。j=2の場合はエラーになる気がするんやけど。。。

⇒for文のところで、jjは、0と1でしか計算していなかった。。。kも0と1

公式だとjは1か2、kも1,2なので、Pythonでもそれに合わせてほしかった。。。

>>> def g(l,j):
... if max_layer == l:
... return (y[j]-t[j]) *f(A[l-1][j])
... else:
... output = 0
... m=A[l-1].shape[0]
... for i in range(m):
... output += g(l+1,i)*W[l][j,i]*f(A[l-1][j])
... return output
...

3-1-5_順伝播
3-1-6_パラメータの更新①
3-1-7_パラメータの更新②
3-1-8_学習の実行

 

今日学んだこと

2層の場合のパラメータの更新をPythonで実装

 

>>> import numpy as np
>>>
>>> def sigmoid(a):
... return 1/(1+np.exp(-a))
...
>>> x1=np.array([[1],[2]])
>>> x1
array([[1],
[2]])
>>> x1[0]
array([1])
>>> x1[1]
array([2])
>>> x1[1][0]
2
>>>
>>> w1=np.array([[0.4,0.3],[0.7,0.6]])
>>> a1=w1.dot(x1)
>>> a1
array([[1. ],
[1.9]])
>>>
>>> x2=sigmoid(a1)
>>>
>>> w2=np.array([[0.2,0.3],[1,0.7]])
>>> w2
array([[0.2, 0.3],
[1. , 0.7]])
>>> a2=w2.dot(x2)
>>> a2
array([[0.40717917],
[1.33998265]])
>>>
>>> y=sigmoid(a2)
>>> y
array([[0.60041131],
[0.79248709]])
>>>
>>> t=np.array([[1],[0]])
>>>
>>> t
array([[1],
[0]])
>>>
>>> X=[x1,x2]
>>> A=[a1,a2]
>>> W=[w1,w2]
>>>
>>> max_layer=len(X)
>>>
>>> def f(a):
... return (1-sigmoid(a))*sigmoid(a)
...
>>>
>>> def g(l,j):
... if max_layer == l:
... return (y[j]-t[j]) *f(A[l-1][j])
... else:
... output = 0
#shape[0]は変数の行数、shape[1]は列数
... m=A[l-1].shape[0]
... for i in range(m):
... output += g(l+1,i)*W[l][j,i]*f(A[l-1][j])
... return output
...
>>> def diff(j,k,l):
... return g(l,j)*X[l-1][k]
...
>>>
>>> y
array([[0.60041131],
[0.79248709]])
>>>
>>>
>>>
>>>
>>> for _ in range(100):
... for l in range(len(X)):
... for j in range(W[l].shape[0]):
... for k in range(W[l].shape[1]):
... W[l][j,k] = W[l][j,k] - diff(j,k,l+1)
... A[0]=W[0].dot(X[0])
... X[1]=sigmoid(A[0])
... A[1]=W[1].dot(X[1])
... y=sigmoid(A[1])
...
...
>>>
>>> y
array([[0.91175343],
[0.08878309]])
>>>
>>> x1
array([[1],
[2]])
>>> y[0]
array([0.91175343])
>>>
>>> y[1]
array([0.08878309])
>>>
>>>

 

 

勉強時間

今日: 1.0時間

総勉強時間: 10.5時間

 

-AI, E資格