【发布时间】:2018-01-28 09:45:59
【问题描述】:
我正在按照这篇论文在python中实现Oja的学习规则
u = 0.01
V = np.dot(self.weight , input_data.T)
print(V.shape , self.weight.shape , input_data.shape) #(625, 2) (625, 625) (2, 625)
到目前为止,我能够按照论文进行操作,但是在从链接到达最终方程时,我遇到了 numpy 数组维度不匹配错误,这似乎是意料之中的。这是最终方程的代码
self.weight += u * V * (input_data.T - (V * self.weight)
如果我这样分解:
u = 0.01
V = np.dot(self.weight , input_data.T)
temp = u * V #(625, 2)
x = input_data - np.dot(V.T , self.weight) #(2, 625)
k = np.dot(temp , x) #(625, 625)
self.weight = np.add(self.weight , k , casting = 'same_kind')
这清除了尺寸限制,但答案模式有一点错误(我只是在修复尺寸顺序时很清楚结果会不正确)。我想知道我对等式的解释在第一种方法中是否正确,这似乎是这样做的合乎逻辑的方式。对正确实施方程式有什么建议吗?
【问题讨论】:
标签: python-3.x neural-network recurrent-neural-network unsupervised-learning