Python神经网络:运行10次迭代

Python神经网络:运行10次迭代,python,for-loop,iteration,neural-network,Python,For Loop,Iteration,Neural Network,所以我定义了一个节点和连接类。我已经创建了3个节点,并为每个节点分配了一个启动激活。然后我假设运行10次迭代,看看会发生什么。但我不知道那是什么意思。我以前从未编程过,这是我的第一语言,所以如果这真的很简单,而且我不懂,请耐心听我说。我确实试过类似于 for i in xrange(10): for thing in nodes: Node.update_activation 但这给了我一个未绑定的变量?所以我完全迷路了 ########################

所以我定义了一个节点和连接类。我已经创建了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 

首先,在底部,您明确地引用了Node类:

for i in xrange(10): 
    for thing in nodes: 
        Node.update_activation
        Node.update_input
您根本没有使用
thing
变量
thing
保存您正在迭代的列表中的当前节点

尝试:

还要注意,我在函数中添加了括号。括号使程序实际调用您创建的函数。例如,
thing.update\u activation()
正在调用
thing
变量中当前保存的节点中的
update\u activation()
函数

此外,此修复后我收到一个错误:看起来您正在节点类中将
self.net\u input
设置为
None
,然后在
update\u activation()
函数中尝试从中减去0.5


你不能从
None
:)中减去0.5。

哦,谢谢你修复了这个东西。更新。我没有意识到他们必须是同一件事。这解释了很多。还有,我如何将3个节点连接在一起,使整个系统工作?我在我的节点类中定义了一个“addconnection”方法,但是节点之间没有连接?我在这里遗漏了一个步骤吗?很抱歉,我只是想澄清一下,因为我希望这3个节点连接起来,这样一个节点可以激活另一个节点,等等。但是现在,我得到的只是相同的输出值。我看不到addConnection()函数或Connection类在这段代码中的任何用途。这可能是一个很好的起点:)
for i in xrange(10): 
    for thing in nodes: 
        thing.update_activation()
        thing.update_input()