因此,我定义了一个节点和连接类。我已经创建了3个节点,并为每个节点分配了一个启动激活。然后我应该运行10个迭代,看看会发生什么。但我不太清楚那是什么意思。我从来没有编程,这是我的第一语言,所以请容忍我,如果这实际上是真的很简单,我不理解。我确实试过..。
for i in xrange(10):
for thing in nodes:
Node.update_activation但这给了我一个未绑定变量?所以我完全迷路了。
############################################################################################
#
# Preparations
#
############################################################################################
nodes=[]
NUMNODES=3
############################################################################################
#
# Node
#
############################################################################################
class Node(object):
def __init__(self,name=None):
self.name=name
self.activation_threshold=0.0
self.net_input=None
self.outgoing_connections=[]
self.incoming_connections=[]
self.activation=None
def addconnection(self,sender,weight=0.0):
self.connections.append(Connection(self,sender,weight))
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
def update_input(self):
self.net_input=0.0
for conn in self.connections:
self.net_input += conn.wt * conn.sender.activation
print 'Updated Input is', self.net_input
def update_activation(self):
self.activation = self.net_input - 0.5
print 'Updated Activation is', self.activation
############################################################################################
#
# Connection
#
###########################################################################################
class Connection(object):
def __init__(self, sender, reciever, weight=1.0):
self.weight=weight
self.sender=sender
self.reciever=reciever
sender.outgoing_connections.append(self)
reciever.incoming_connections.append(self)
############################################################################################
#
# 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())
for i in xrange(10):
for thing in nodes:
Node.update_activation
Node.update_input 发布于 2014-02-24 03:31:58
首先,在底部显式地引用Node类:
for i in xrange(10):
for thing in nodes:
Node.update_activation
Node.update_input您根本没有使用thing变量。thing保存正在迭代的列表中的当前节点。
尝试:
for i in xrange(10):
for thing in nodes:
thing.update_activation()
thing.update_input()还请注意,我在函数中添加了括号。括号使程序实际上调用了您创建的函数。例如,thing.update_activation()正在调用当前保存在thing变量中的节点中的update_activation()函数。
此外,在此修复之后,我会收到一个错误:看起来您在Node类中将self.net_input设置为None,然后在update_activation()函数中尝试从它中减去0.5。
您不能从None中减去0.5 :)
https://stackoverflow.com/questions/21977930
复制相似问题