2015-04-27 2 views
-1

Я пытаюсь написать симулятор в python для создания нейронных сетей. сети было запланировано быть построены из нейронов и связей, как показано ниже:AttributeError: объект 'int' не имеет атрибута 'output'

Класс соединения:

class Connection(object): 

connectionType = 0 
weight = [[0 for x in range(1)] for x in range(9)] 

def __init__(): 
    self.threshold = 0 
    self.connectionType = 0 

И Neuron класс:

import Connection 

class Neuron(object): 

ID = 1 
OveralPotential = 0 

def __init__(self): 
    global ID 
    self.input = [[0 for x in range(1)] for x in range(9)] 
    self.output = [[0 for x in range(1)] for x in range(9)] 
    self.id = Neuron.ID 
    Neuron.ID += 1 

def connect(srcNeuron, dstNeuron, connectionType): 
    srcNeuron.output[dstNeuron.id] = 1 
    dstNeuron.input[srcNeuron.id] = 1 
    Connection.Connection.connectionType = connectionType 

if __name__ == "__main__": 

n1 = Neuron() 
n2 = Neuron() 
n3 = Neuron() 
print("ID of the 3rd neuron is {0}".format(n3.id)) 
n4 = Neuron() 
n5 = Neuron() 

Neuron.connect(1,3,1) 
Neuron.connect(1,4,1) 
Neuron.connect(1,5,1) 
Neuron.connect(2,3,1) 
Neuron.connect(2,4,1) 
Neuron.connect(2,5,1) 

Но вот StackTrace:

ID of the 3rd neuron is 3 
Traceback (most recent call last): 
File "C:\Program Files\Microsoft Visual Studio  12.0\Common7\IDE\Extensions\Mic 
rosoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 106, in 
exec_file 
exec_code(code, file, global_variables) 
File "C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Mic 
rosoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 82, in 
exec_code 
exec(code_obj, global_variables) 
File "C:\Users\Matinking\Documents\Visual Studio 2013\Projects\NeuroSimulation 
\NeuroSimulation\Neuron.py", line 31, in <module> 
Neuron.connect(1,3,1) 
File "C:\Users\Matinking\Documents\Visual Studio 2013\Projects\NeuroSimulation 
\NeuroSimulation\Neuron.py", line 16, in connect 
srcNeuron.output[dstNeuron.id] = 1 
AttributeError: 'int' object has no attribute 'output' 

Я проверил возможные дубликаты в этом случае, например:

AttributeError: 'int' object has no attribute 'split'

и

AttributeError: 'int' object has no attribute 'write'

Но ни один из них не дал мне достаточно понять для обработки над материалом. Как я могу это решить ?!

Заранее спасибо

+1

Вы вызывают метод 'Neuron.connect()' с целыми аргументами, а затем связывают для доступа к атрибуту '.connect' в fi первая строка этого метода. Чего вы ожидаете? – dawg

ответ

1

Вы передаете целые значения метода

def connect(srcNeuron, dstNeuron, connectionType): 
    srcNeuron.output[dstNeuron.id] = 1 
    dstNeuron.input[srcNeuron.id] = 1 
    Connection.Connection.connectionType = connectionType 

, когда вы вызываете его

Neuron.connect(1,3,1) 
Neuron.connect(1,4,1) 
Neuron.connect(1,5,1) 
Neuron.connect(2,3,1) 
Neuron.connect(2,4,1) 
Neuron.connect(2,5,1) 

Я думаю, что вы на самом деле имел в виду, чтобы указать нейроны вместо целых

Neuron.connect(n1,n3,n1) 
Neuron.connect(n1,n4,n1) 
Neuron.connect(n1,n5,n1) 
Neuron.connect(n2,n3,n1) 
Neuron.connect(n2,n4,n1) 
Neuron.connect(n2,n5,n1) 
+0

Благодарим вас за эту безумную ошибку! – Roboticist

1

connect функция ожидает два объекта типа Neuron, а не Neuron ID. Вы передаете id, то есть int, и python пытается получить доступ к выходному полю.

Смежные вопросы