问题标签 [max-pooling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - 最大池和平均池的混合
在使用 Keras(使用 TensorFlow 后端)调整深度卷积网络时,我想尝试在 和 之间进行混合MaxPooling2D
,AveragePooling2D
因为这两种策略似乎都改善了关于我的目标的两个不同方面。
我正在考虑这样的事情:
或者作为一个等式:
既然这样的东西看起来不是现成的,那如何才能有效地实施呢?
tensorflow - TensorFlow max_pool2d 输出大小错误
我正在尝试使用过滤器大小为 2x2 的最大池层,因此我希望输出大小大约是输入大小的一半。输入大小为 9x14x64,但出于某种原因,输出大小为 7x12x64(请参阅随附的TensorBoard 图)。
这是TensorFlow代码:
我错过了什么吗?
tensorflow - 了解 TensorFlow 最大池化
我无法理解为什么使用我的参数进行 tensorflow maxpooling。
当使用and执行 maxpool 时ksize=2
,strides=2
我得到以下输出padding SAME
padding VALID
ksize=3
但是当我尝试使用and执行 maxpool 时strides=1
,我得到以下输出:
maxpool withksize=2
和strides=2
usingpadding SAME
应该已经产生了输出maxpool2d_out : (?, 28, 28, 32)
关于使用填充的最大池化是如何工作的,我错过了什么吗?
**CODE**==
Python_
matlab - matcovnet pooling_cup.cpp pooling_backward_cpu 函数参数
您好我正在尝试在 matcovnet 中编写一个新的池化层。我尝试使用 Matlab 代码,但速度太慢了,所以现在我尝试使用 cpp 代码来实现。我正在尝试使用 pooling_cup.cpp 代码来实现我的工作。但我对 pooling_backward_cpu 函数的参数感到困惑 -
pooling_backward_cpu(type* derData,
type const* data,
type const* derPooled,
size_t width, size_t height, size_t depth,
size_t windowWidth, size_t windowHeight,type const* a,
size_t strideX, size_t strideY,
size_t padLeft, size_t padRight, size_t padTop, size_t
padBottom)
现在 - 是什么type* derData,
type const* data,
type const* derPooled
意思?
python - 合并多个 keras 最大池化层
我是 keras 的新手。
我的目标是总共拥有 4 个最大池化层。它们都采用形状相同的输入 (N, 256)。第一层进行全局最大池化并给出 1 个输出。第二层池大小为 N / 2,步幅为 N / 2,提供 2 个输出。第三个给出 4 个输出,第四个给出 8 个输出。这是我的代码。
创建 4 个最大池化层后,我尝试将它们合并在一起,但 keras 给出了这个错误。
ValueError:两个形状中的维度 1 必须相等,但对于具有输入形状的“merge_1/concat”(操作:“ConcatV2”)为 4 和 8:[?,1,1,1], [?,2,1, 1], [?,4,1,1], [?,8,1,1], [] 和计算的输入张量:input[4] = <3>。
我该如何解决这个问题?合并正确的方法来实现我在 keras 中的目标吗?
python - Pytorch 在通道维度上的最大池化
我试图用 Pytorch 构建一个 cnn,并且在最大池化方面遇到了困难。我拿了斯坦福大学的cs231n。我记得,maxpooling 可以用作维度扣除步骤,例如,我有这个 (1, 20, height, width) 输入 ot max_pool2d(假设我的 batch_size 是 1)。如果我使用 (1, 1) 内核,我希望得到这样的输出:(1, 1, height, width),这意味着内核应该在通道维度上滑动。但是,在检查 pytorch 文档后,它说内核在高度和宽度上滑动。感谢 Pytorch 论坛上的 @ImgPrcSng,他告诉我使用 max_pool3d,结果效果很好。但是在 conv2d 层的输出和 max_pool3d 层的输入之间仍然存在一个 reshape 操作。所以很难聚合成一个nn.Sequential,所以我想知道有没有另一种方法可以做到这一点?
deep-learning - CNN中通道的最大池化
我需要减少 CNN 网络中的频道数量。我的输入是一个 4D 对象(样本、行、列、通道)。通道数为 3,我的训练输出只有一个通道。无论如何在训练期间在通道方向上进行最大池化?
提前致谢
python - 问题训练具有素数输入维度的 CNN
我目前正在使用 Keras(自动编码器)开发 CNN 模型。这种类型我的输入是 shape (47,47,3)
,即具有 3 个(RGB)层的 47x47 图像。
我过去曾与一些 CNN 合作过,但这次我的输入尺寸是素数(47 像素)。我认为这会导致我的实现出现问题,特别是在我的模型中使用MaxPooling2D
时。UpSampling2D
我注意到最大池化然后上采样时会丢失一些尺寸。
使用model.summary()
我可以看到,在通过带有内核(即 24 个过滤器和一半形状)的(47,47,3)
a 和 MaxPooling 传递我的输入后,我得到的输出形状为.Conv2D(24)
(2,2)
(24, 24, 24)
现在,如果我尝试通过使用(2,2)
内核(形状加倍)进行 UpSampling 来反转它并再次卷积,我会得到一个(48,48,3)
整形输出。这比需要的多一排和一列。
对此我认为“没问题,只需选择一个内核大小,在上采样时为您提供所需的 47 像素”,但鉴于 47 是质数,在我看来,没有内核大小可以做到这一点。
有什么方法可以绕过这个不涉及将我的输入尺寸更改为非素数的问题?也许我在我的方法中遗漏了一些东西,或者 Keras 有一些我忽略的功能在这里可以提供帮助。
machine-learning - 在某些情况下,在 CNN 中省略池化层是否有意义?
我知道通常的 CNN 由卷积层和池化层组成。池化层使输出更小,这意味着计算量更少,并且它们还使其以某种方式变换不变,因此来自内核滤波器的特征的位置可以在原始图像中移动一点。
但是当我不使用池化层时会发生什么?原因可能是我想要原始图像中每个像素的特征向量,因此卷积层的输出必须与图像大小相同,只是有更多通道。这有意义吗?这些特征向量中是否还会有有用的信息,还是需要在 CNN 中使用池化层?还是有一些方法可以通过池化层获取单个像素的特征向量?
matlab - 激活的维度如何作为池化层的输入
我使用的是alexnet,你可以看到网络的结构如下:
我使用 Matlab 中的激活函数从 conv5 层的输出中获取数据的特征。输出是一个特征向量,每个图像的维度为 43264(我有 14000 个图像)。
我对此输出进行了一些处理,但尺寸没有变化,所以它仍然是 43264。
我想从池化第 5 层开始将数据重新输入网络并训练网络。
在 alexnet 的结构中可以注意到,池 5 的输入应该是 13x13x256。所以我将特征向量 43264 更改为 13x13x256 矩阵,所以整个训练集将是一个 14000x1 的单元阵列,每个单元有 13x13x256。
我使用以下代码来训练网络:
我仍然有一个错误,说池化层的意外输入!
请问我有什么想法吗?
提前致谢
非常感谢