pythonを勉強中なのですが
なぜエラーが出ているのかさっぱりわかりません
コード class imput: def __init__(self,N): self.N=N def start(self,inp): self.y=inp def b(self,dout,eta): print('学習完了') #----------------------------------------------- class afine:#大元 def __init__(self,N,inp): self.N=N self.next=inp self.w = np.random.rand(self.next.N,N) * (2.0 /self.N) self.by = np.zeros(N) self.x = None self.dW = None self.db = None self.y = None def f(self): self.x = self.next.y self.y=np.dot(self.x, self.w) + self.by def b(self,dout,eta): dx = np.dot(dout, self.w.T) self.dW = np.dot(self.x.T, dout) self.db = np.sum(dout, axis=0) self.w = self.w - eta*self.dW self.by = self.by - eta*self.db self.next.b(dx,eta) #-------------------------------------------------------------- class output: def __init__(self,zz): self.next=zz def f(self): a_max=max(self.next.y) #<<<<<<<<<<<<<<<ここエラー x = np.exp(self.next.y-a_max) u = np.sum(x) self.out_put= x/u print(self.out_put) def loss(self,d,eta): batch_size = d.shape[0] if d.size == self.out_put.size: # 教師データがone-hot-vectorの場合 self.dx = (self.out_put - d) / batch_size else: self.dx = self.out_put.copy() self.dx[np.arange(batch_size), d] -= 1 self.dx = self.dx / batch_size self.next.b(self.dx,eta) """ =====パラメーター====== epoc=エピソード step=ステップ数 eta=学習率 """ eta=0.01 epoc=1000 step=2000 #imput= input型 # mx= ニューロン数 前の層 #output= input i=imput(10) m1=afine(200,i) m2=afine(6600,m1) m3=afine(6600,m2) m4=afine(6600,m3) m5=afine(10,m4) o=output(m5) #start(何をインプットにするか 必ずnp.matrix([])で書くこと ) #mx.f() #o.f() print('start') zz=np.matrix([1,2,3,4,5,6,7,8,9,10]) i.start(zz) m1.f() m2.f() m3.f() m4.f() o.f() d=np.matrix([0,0,0,1,0,0,0,0,0,0]) #出力 出力 eta o.loss(d,0.01)
コード start --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-78-dbf6e7c4bbf8> in <module> 118 m3.f() 119 m4.f() --> 120 o.f() 121 122 d=np.matrix([0,0,0,1,0,0,0,0,0,0]) <ipython-input-78-dbf6e7c4bbf8> in f(self) 72 self.next=zz 73 def f(self): ---> 74 a_max=max(self.next.y) 75 x = np.exp(self.next.y-a_max) 76 u = np.sum(x) TypeError: 'NoneType' object is not iterable
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。