2
我是OpenCV和Android開發noob,我試圖用OpenCV的Java API實現神經網絡。除了ReLU激活功能之外,我找到了所需的所有功能。所以我決定用Java手動實現這個功能。我的實現逐個遍歷Mat的元素,使用Mat.get()訪問元素,修改負值,並使用Mat.put()寫回它們。如何使用OpenCV的Android API實現激活函數?
for (int i = 0; i < output_dim; i++) {
float[] value = new float[1];
input.get(0, i, value);
if (value[0] < 0) {
value[0] = 0;
input.put(0, i, value);
}
}
我已經對我的代碼進行了剖析,看起來像我的ReLU函數(get and put)是整個網絡操作的瓶頸。我可以想到幾個解決方案,但我不確定哪個更好,或者解決方案比我的更好。
- 使用並行實現ReLU一次處理多個輸入。
- 在C++中實現ReLU以更容易地訪問矩陣的元素。
- 以某種方式使用OpenCV's DNN module或ANN_MLP有一些神經網絡的基本構建模塊。雖然我不確定如何在Java代碼中使用這些C++實現。
能否讓我知道這些解決方案是否有好處或者引入其他解決方案?