Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用OpenCV'实现激活功能;什么是安卓API?_Android_Opencv_Neural Network - Fatal编程技术网

Android 如何使用OpenCV'实现激活功能;什么是安卓API?

Android 如何使用OpenCV'实现激活功能;什么是安卓API?,android,opencv,neural-network,Android,Opencv,Neural Network,我是一名OpenCV和Android开发人员,我正在尝试使用OpenCV的JavaAPI实现神经网络。我已经找到了所有我需要的功能,除了ReLU激活功能。所以我决定用Java手动实现这个函数。我的实现逐个遍历Mat的元素,使用Mat.get()访问元素,修改负值,并使用Mat.put()将它们写回 for(int i=0;i

我是一名OpenCV和Android开发人员,我正在尝试使用OpenCV的JavaAPI实现神经网络。我已经找到了所有我需要的功能,除了ReLU激活功能。所以我决定用Java手动实现这个函数。我的实现逐个遍历Mat的元素,使用Mat.get()访问元素,修改负值,并使用Mat.put()将它们写回

for(int i=0;i
我已经分析了我的代码,看起来我的ReLU函数(get和put)是整个网络操作的瓶颈。我可以想出一些解决方案,但我不确定哪一个更好,或者是否有比我更好的解决方案

  • 使用ReLU的并行实现一次处理多个输入
  • 在C++中实现Relu,以方便访问矩阵元素。
  • 以某种方式使用或具有神经网络的一些基本构建块。虽然我不确定如何在java代码中使用C++实现。
    您能告诉我这些解决方案中是否有好的解决方案,或者介绍其他解决方案吗?

    我稍微修改了上面的代码,并获得了巨大的加速。新的代码段如下所示:

    float[] values = new float[output_dim];
    input.get(0, 0, values);
    
    for (int i = 0; i < output_dim; i++) {
        if (values[i] < 0) {
            value[i] = 0;
        }
    }
    
    input.put(0, 0, values);
    
    float[]值=新的float[output_dim];
    获取(0,0,值);
    对于(int i=0;i
    从Java访问单个元素似乎需要很多时间

    float[] values = new float[output_dim];
    input.get(0, 0, values);
    
    for (int i = 0; i < output_dim; i++) {
        if (values[i] < 0) {
            value[i] = 0;
        }
    }
    
    input.put(0, 0, values);