0
ReLUアクティベーション機能を使用して次の入力番号を印刷しようとしています。私はネットワークを何度か訓練しましたが、私は出力を0にしました。ReLUニューラルネットワークのみ0を返します
ここに私が実装しようとしているコードです。誰かが私が間違っていることを教えてもらえますか?
import numpy as np,random
class NeuralNetwork():
def _init_(self):
random.seed(1)
self.weights = 0.5
def relu(self,x):
for i in range(0,len(x)):
if x[i]>0:
pass
else:
x[i]=0
return x
def relu_derv(self,x):
for i in range(0,len(x)):
if x[i]>0:
x[i]=1
else:
x[i]=0
return x
def train(self,input ,output,iterations):
for i in xrange(iterations):
out = self.think(input)
error = output-out
adjustments = np.dot(input.T,error*self.relu_derv(out))
self.weights += adjustments
def think(self,input):
return self.relu(np.dot(input,self.weights))
if _name_=="__main__":
neural= NeuralNetwork()
print "before train weights"
print neural.weights
input = np.array([1,2,3,4,5,6,7,8,9])
output = np.array([2,3,4,5,6,7,8,9,10]).T
print input
neural.train(input,output,100000)
print "after train weights"
print neural.weights
print "neural"
a=[13,15]
print neural.think(a)
'self.weights'はスカラーです。したがって、 'np.dot'はスカラーをwllとして返します。ランタイムエラーが発生することなく 'relu'の中で' len'をどのように呼び出すことができますか? – Omni
スカラーとベクトルの内積はベクトルです。ベクトルのすべての要素にスカラーを乗算するだけです。入力= np.array([1,2,3,4,5,6,7,8,9]) print np.dot(input、2) プリント2 *入力 –