【发布时间】:2015-10-08 10:30:23
【问题描述】:
我正在尝试从具有 500 行数据的 xls 文件中构建一个简单的神经网络,该网络具有 8 个输入和 2 个输出,矩阵中包含 2 个隐藏权重 (8, 2)。目前,神经元还没有开始学习任何东西。它只是一个示例代码,使其运行随机权重。这是我的代码
def sigmoid(x,deriv=False):
if(deriv==True):
return sigmoid(x,False)*(1-sigmoid(x,False))
return 1/(1+np.exp(-x))
def neuron(inputs, weights):
weighted_input = np.dot(inputs, weights)
return sigmoid(weighted_input, False)
weights = 2 * np.random.random((8,2)) - 1
W = np.array([weights])
error1 = []
for i in range(500):
for k in range (2):
X = X_T[i] #list of 8 Inputs from xls
T = T_T[i] #list of 2 outputs from xls
Y = neuron(X, W)[k]
error1.append(np.sqrt((Y[k] - T) ** 2))
print W
print np.average(error1)
pl.plot(error1)
我希望这段代码针对目前随机的两个隐藏权重运行。这就是为什么我将 k 的范围设置为 2。但是当我尝试运行它时,我收到以下错误。
IndexError Traceback (most recent call last)
<ipython-input-36-b300ce507da8> in <module>()
20 X = X_T[i]
21 T = T_T[i]
---> 22 Y = neuron(X, W)[k]
23 error1.append(np.sqrt((Y[k] - T) ** 2))
24
IndexError: index 1 is out of bounds for axis 0 with size 1
我知道我搞砸了循环。但我不知道如何解决这个问题。
【问题讨论】:
-
您的函数返回一个浮点数,并且您正试图通过索引访问该值。这显然会引发错误。
-
你能帮我纠正一下吗?我对python有点陌生
-
Y = 神经元(X, W)[k] 我认为这应该是 Y = 神经元(X, k)?为什么要将输出作为权重发送?
-
您可能希望在
T_T列表中使用k而不是i,并在neuron(X, W)之后删除[k]
标签: python numpy ipython neural-network