2017-10-10 224 views
-4

我應該如何解決此錯誤?IndexError:布爾型索引與維度1上的索引數組不匹配;維度爲3,但對應的布爾維度爲10

dhidden[hidden <= 0] = 0 

給我的錯誤:

IndexError: boolean index did not match indexed array along dimension 1; dimension is 3 but corresponding boolean dimension is 10 

更多信息:

print(type(hidden)) 
<class 'numpy.ndarray'> 
print(type(hidden)) 

<class 'numpy.ndarray'> 
print(dhidden.shape) 
(5, 3) 
print(hidden.shape) 
(5, 10) 

hidden.dtype和dhidden.dtype是float64

我試圖dhidden [隱藏< = 0.0 ] = 0.0,仍然得到相同的錯誤。

+1

'hidden'和'dhidden'具有不同的形狀,正如您可以清楚地看到的那樣。它們不兼容。你能解釋一下你試圖通過使用另一個作爲掩碼來實現嗎? – Reti43

+0

這裏應用ReLU作爲激活功能。這裏代表梯度。 –

+1

不,不。你沒有解釋的是爲什麼這兩個陣列有不同的形狀,當你期望像這樣使用它們。錯誤很明顯,陣列有不同的形狀。 – Reti43

回答

0

指數,即hidden的布爾值評估返回超出了dhidden的界限。因此,表達式的結果可能會返回索引4,9,該索引超出了dhidden的範圍。 dhidden的尺寸可以大於隱藏的尺寸,但不是相反。如果你想只hidden相關的值,你可以嘗試以下方法:

dhidden[hidden[:, :3] <=0] = 0

每@ Reti43的建議:要注意,這假定只有第3列是從隱藏的相關是很重要的。

+0

我們缺乏重要的上下文來說明切片陣列是否可行。當然,它以編程的方式。但是你真的*正在處理你想要工作的數據嗎? – Reti43