Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
Deep learning CNN中多维卷积数组上最大池运算的最佳时间复杂度_Deep Learning_Conv Neural Network_Max Pooling - Fatal编程技术网

Deep learning CNN中多维卷积数组上最大池运算的最佳时间复杂度

Deep learning CNN中多维卷积数组上最大池运算的最佳时间复杂度,deep-learning,conv-neural-network,max-pooling,Deep Learning,Conv Neural Network,Max Pooling,在思考这个问题时,我发现如果卷积2d数组是mn,这个算法在O(mn)时间内有效 看看怎么做。 对于一维情况,我们需要在数组中每个大小为k的窗口中找到最大值的答案。使用deque。 有关更多详细信息,请参见此 假设在2D情况下,k是过滤器大小,跨步是10填充和n*m矩阵 步骤1 然后计算所有大小为k的窗口的最大值,得到每行大小为k的窗口的最大值。在计算完所有行之后 步骤2 之后,在变换矩阵中,对修改矩阵中每列上大小为k的滑动窗口中最大的列执行相同的操作。 重复上述步骤后,将得到大小为k*k的整个

在思考这个问题时,我发现如果卷积2d数组是mn,这个算法在O(mn)时间内有效

看看怎么做。 对于一维情况,我们需要在数组中每个大小为k的窗口中找到最大值的答案。使用deque。 有关更多详细信息,请参见此

假设在2D情况下,k是过滤器大小,跨步是10填充和n*m矩阵

步骤1 然后计算所有大小为k的窗口的最大值,得到每行大小为k的窗口的最大值。在计算完所有行之后

步骤2 之后,在变换矩阵中,对修改矩阵中每列上大小为k的滑动窗口中最大的列执行相同的操作。 重复上述步骤后,将得到大小为k*k的整个子数组的最大值,该子数组从矩阵的位置i,j开始,i,j作为左上角,i+k-1,j+k-1作为右下角

证据很简单

当您有k行的最大值时,在一个大小为k的窗口中计算列上的最大值可以得到整个矩阵上的最大值

范例

532114

2 3 1 5 3

12346

123445

5 4 3 2 1

假设n=5m=5,k=3

修改后的矩阵看起来像

5 3 4

353

3 4 6

3 4 5

5 4 3

进一步应用步骤2看起来像

5 5 6

356

5 4 6

这就是我们面前的最大池层

这是一个可以优化CNN模型的好算法,还是有更好的现有算法?请发表你的意见