我正在运行以下代码,其中该函数weighted_values
返回具有指定概率的随机值序列。我正在从这个答案中使用此功能生成具有权重的离散随机变量
以下是我的代码:
def weighted_values(values, probabilities, size):
bins = np.add.accumulate(probabilities)
return np.array(values[np.digitize(random_sample(size), bins)])
def weak_softmax(a):
b=np.exp(a)
return b/(1+sum(b))
elements=np.array([1,2,3])
prob=np.array([0.2,0.5,0.3])
system_index=0;
T=10;M=2;
for t in np.arange(T):
prob=weak_softmax(np.random.uniform(0,1,M+1));
system_index=weighted_values(np.arange(M+1),prob,1)[0]
print(system_index)
但是,当我运行此代码时,有时会收到以下错误消息:
Traceback (most recent call last):
File "gradient_checking.py", line 75, in <module>
system_index=weighted_values(np.arange(M+1),prob,1)[0]
File "gradient_checking.py", line 57, in weighted_values
return np.array(values[np.digitize(random_sample(size), bins)])
IndexError: index 3 is out of bounds for axis 1 with size 3
谁能建议我在做什么错以及如何修改?
该错误告诉我,您有一个具有形状的数组(n,3)
(轴1的大小为3),并且尝试使用3
In [9]: np.ones((5,3))[:,3]
...
IndexError: index 3 is out of bounds for axis 1 with size 3
在问题陈述中:
values[np.digitize(random_sample(size), bins)]
我建议检查的形状values
。副手看起来好像是np.arange(M+1)
在哪里M
2。那是3号,但1d。
还np.digitize(random_sample(size), bins)
产生什么?
当您遇到此类错误时,您需要检查可疑数组的形状,并检查索引值的范围。仅阅读您的代码,我们只能猜出这么多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句