这是我的代码(它的一小部分,但你在这里所有人都是了解我认为的错误的必要条件)。 此外,我的代码应该应用 DELTA RULE
import numpy as np
import random
y = np.array([[ 45, 85, -1],
[ 50, 43, -1],
[ 40, 80, -1],
[ 55, 42, -1],
[200, 43, -1],
[ 48, 40, -1],
[195, 41, -1],
[ 43, 87, -1],
[190, 40, -1]])
w = np.random.uniform(low=-1, high=1, size=(9,3))
我的w看起来像:
array([[ 0.56, 0.68, 0.10],
[-0.62, -0.07, -0.75],
[-0.89, -0.42, -0.21],
[-0.20, 0.59, 0.23],
[-0.06, 0.25, -0.56],
[-0.71, 0.17, 0.61],
[ 0.43, -0.11, 0.04],
[ 0.40, -0.77, -0.66],
[-0.24, -0.60, 0.62]])
其余的代码就是这个,这就是我的问题必须要解决的问题
o = np.zeros(shape=(9,3))
net = np.zeros(shape=(9,3))
e = 2.71828182846
for i in range(0,9):
#print("Pattern(Step) %d"% (i+1))
for j in range(0,3):
net[i,j] = np.dot(y[i,j],w[i,j])
o[i,j] = 2/(1+e**(-net[i,j]))-1
print("\nnet[%d,%d]:"% (i,j))
对我来说,o将是一个数组,它将计算几乎相同的东西,如
np.sign(net[i,j])
但是值将是float类型而不是np.sign函数
中的整数错误是这样的:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-169-2719c5d1251f> in <module>()
8 #print("Pattern(Step) %d"% (i+1))
9 for j in range(0,3):
---> 10 net[i,j] = np.dot(y[i,j],w[i,j])
11 o[i,j] = 2/(1+e**(-net[i,j]))-1
12 print("\nnet[%d,%d]:"% (i,j))
TypeError: 'int' object is not subscriptable
我真的不明白为什么它会给我一个错误...
请帮帮我。
此外,
如果我规范化y数组中的值并将它们放在另一个数组中并使用该数组而不是y,它将不再给我这个错误。 但问题是,对于y数组中的最小元素,标准化值将为零,因此我的一些net [i,j]值将为零,这将使我的程序陷入困境。因为零会阻止我计算程序中的其他一些值。