我有这个错误,我不明白为什么:int'对象不可订阅

时间:2018-01-02 12:38:40

标签: python arrays python-3.x

这是我的代码(它的一小部分,但你在这里所有人都是了解我认为的错误的必要条件)。 此外,我的代码应该应用 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]值将为零,这将使我的程序陷入困境。因为零会阻止我计算程序中的其他一些值。

0 个答案:

没有答案