前提
pythonでニューラルネットワークを作り学習させるコードです。
実現したいこと
対象行で行列同士の内積を取りたい
発生している問題・エラーメッセージ
ValueError: operands could not be broadcast together with shapes (3,2) (3,3) (3,2)
該当のソースコード
python
1input_teacher = np.array([[0,0,-1],[0,1,-1],[1,0,-1],[1,1,-1]]) 2output_teacher = np.array([[0,1,1,0]]).T 3w1 = 2*np.random.random((3,2))-1 4w2 = 2*np.random.random((3,1))-1 5 6def sigmoid_der(x): 7 return sigmoid(x)/(1-sigmoid(x)) 8 9def d2_1(x,o,t): 10 return sigmoid_der(x)*(o-t) 11 12def d1_1(d,x): 13 return sigmoid_der(x)*(d @ w2.T) 14 15for i in range(1): 16 a=sigmoid(input_teacher @ w1) 17 a=np.hstack((a,[[-1]]*len(a))) 18 out=sigmoid(a @ w2) 19 d21=d2_1(out,output_teacher,out) 20 d11=d1_1(d21,a) 21 print(input_teacher.T) 22 print(d11) 23 w1+=input_teacher.T @ d11 24 w2+=a.T @ d21
上記コードの下から二行目でエラーが起きています。
試したこと
.Tを消して試しましたがそうすると揃っていないとエラーが出るのでこうするしかないです。
補足情報(FW/ツールのバージョンなど)
jupyter notebook
あなたの回答
tips
プレビュー