N=100
numbers_training_pattern=10
for pattern in range(number_training_pattern):
rate=np.zeros((1,N))
for epoch in range(1,nepochs+1):
if epoch<=1:
clamp=1
else:
clamp=0
activ=np.zeros((1,N))
for neuron in range(N):
PreSynInput = rate.T + (Testing_pattern[neuron, pattern] * clamp)
activ[neuron] = np.dot(PreSynInput.T,autocorrelation_matrix[:,neuron])
错误 索引器错误跟踪(最近一次调用最后一次) 在() 17岁 18岁 --->;19活动[神经元]=np.点(预同步输入T,自相关矩阵[:,神经元]) 20个 21岁
索引器错误:索引1超出大小为1的轴0的边界
意味着
activ
有1行和N
列。activ[0]
指第一行。activ[1]
将引发索引器错误,因为没有第二行。for i in range(N)
使i
的范围从0到N-1
。因此,如果N
大于1,则会发生错误。在更改当前代码的最少数量时修复错误的一种方法是使用
然而,逐元素为NumPy数组赋值通常不是利用NumPy的理想方法。如果您可以将计算表示为在更大的数组上完成的计算,并且不使用Python for循环,那么您将获得更好的性能。
例如,如果我正确理解未定义数组的形状,则 可以替换
与
例如
如果你能找到一种方法来消除
for pattern
-循环和for epoch
-循环。如何消除这些循环是一个非常困难和有趣的问题 为一个单独的问题辩护。如果你真的发布了一个关于它的新问题,请包含一个minimal example with runnable code所以 完全清楚给定输入的期望输出是什么。
相关问题 更多 >
编程相关推荐