MLP = Sin(x1-x2 + x3-x4)

时间:2018-04-13 17:15:29

标签: python-3.x neural-network perceptron

我有这个功能来更新我的mlp为sin函数的权重

它适用于xor没有问题,但我无法弄清楚为什么它不会因为我的罪在那里同样的方式,但我一直在

错误:

unsupported operand type(s) for *: 'float' and 'builtin_function_or_method'
def update_weights(self, learning_rate):

    self.weights1 = np.add(self.weights1, learning_rate * self.delta_weights1)
    self.weights2 = np.add(self.weights2, learning_rate * self.delta_weights2)
    self.delta_weights1 = np.array
    self.delta_weights2 = np.array

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

问题来自以下几点:

self.delta_weights1 = np.array
self.delta_weights2 = np.array

self.delta_weights1将被分配函数(或函数指针)np.array而不调用它。

如果您这样做:

type(np.array)

你会得到:

<type 'builtin_function_or_method'>

如果你调用函数(即添加括号),这需要一个对象转换为数组:

type(np.array([]))

你会得到:

<type 'numpy.ndarray'>

如果您想在更新权重后将delta_weights变量重置为零(例如,在累积下一个小批量的贡献之前),请使用以下内容:

self.delta_weights1 = np.zeros(self.weights1.shape)
self.delta_weights2 = np.zeros(self.weights2.shape)

(另请参阅np.zeros()文档)。