2014-02-28 56 views
0

所以我在這裏遇到的問題是,當我運行此代碼。我得到的開始激活爲0的負值。我假設這是因爲連接不正確,但我沒有看到這個代碼的問題。有人可以幫我看一下嗎?Python 3節點神經網絡:負值

####################################################################################### 
# 
#        Preparations 
# 
####################################################################################### 

import random 
import math 
import pygame 
nodes=[] 
NUMNODES=3 

####################################################################################### 
# 
#         Node Class 
# 
####################################################################################### 

class Node(object): 

    def __init__(self,name=None): 
     self.name=name 
     self.activation_threshold=1.0 
     self.net_input=0.0 
     self.outgoing_connections=[] 
     self.incoming_connections=[] 
     self.connections=[] 
     self.activation=None 

    def __str__(self): 
     return self.name 

    def addconnection(self,sender,weight=1.0): 
     self.connections.append(Connection(self,sender,weight)) 
     print "Node", str(self), "now contains", str(self.connections[-1]) 

    def update_input(self): 
     self.net_input=0.0 
     for conn in self.connections: 
      self.net_input += conn.weight * conn.sender.activation 
     print 'Updated Input for node', str(self), 'is', self.net_input 

    def update_activation(self): 
     self.activation = self.net_input - 0.5 
     print 'Updated Activation for node', str(self), 'is', self.activation 

####################################################################################### 
# 
#         Connection Class 
# 
####################################################################################### 

class Connection(object): 
    def __init__(self, sender, reciever, weight): 
     self.weight=weight 
     self.sender=sender 
     self.reciever=reciever 
     sender.outgoing_connections.append(self) 
     reciever.incoming_connections.append(self) 
     print 'Created', str(self) 

    def __str__(self): 
     string = "Connection from " + str(self.sender) + " to " + str(self.reciever) + ", weight = " + str(self.weight) 
     return string 

    def update_weight(self): 
     pass 

####################################################################################### 
# 
#         Other Programs 
# 
####################################################################################### 

def set_activations(act_vector): 
    """Activation vector must be same length as nodes list""" 
    for i in xrange(len(act_vector)): 
     nodes[i].activation = act_vector[i] 


for i in xrange(NUMNODES): 
    nodes.append(Node(str(i))) 
    print "Created node:", nodes[i] 


for i in xrange(NUMNODES):#go thru all the nodes calling them i 
    for j in xrange(NUMNODES):#go thru all the nodes calling them j 
     if i!=j:#as long as i and j are not the same 
      nodes[i].addconnection(nodes[j])#connects the nodes together 

####################################################################################### 
# 
#           Setting Activations 
# 
####################################################################################### 

set_activations([0.5,0.0,0.0]) 

####################################################################################### 
# 
#          Running 10 Iterations 
# 
####################################################################################### 

for i in xrange(10): 
    for thing in nodes: 
     thing.update_input() 
    for thing in nodes: 
     thing.update_activation() 

out_file=open('output.txt','w') 
out_file.close() 

回答

0

啊沒關係!我意識到我連接節點到自己,所以它沒有正常運行。重新連線並且現在工作正常。

def addconnection(self,sender,weight=1.0): 
    self.connections.append(Connection(sender, self, weight))