次のコードを実行しています。weighted_values
関数は、指定された確率でランダム値のシーケンスを返します。インデックスエラー:インデックス3は、サイズ1の軸1の範囲外です。
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
は誰が何を示唆することができ、このエラーが出る:私は次は私のコードで、この答えからGenerating discrete random variables with weights
を、この機能を使用しています私は間違っていて、修正する方法は?
完全なエラーとそれがスローされた行とともにコード全体を投稿できますか? 'random_sample(...)'とは何ですか? –
@ Shiva:random_sampleは、以前の答えへのリンクで説明したように、明らかに0と1の間の一様乱数を生成します。 – pikachuchameleon