标签: max-pooling

Keras的MaxPooling1D和GlobalMaxPooling1D功能有什么区别?

MaxPooling1D和GlobalMaxPooling1D都被描述为时间数据的最大池操作.

keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')

我知道GlobalMaxPooling1D没有输入参数. keras.layers.pooling.GlobalMaxPooling1D()

我想直观地了解他们两个人的工作方式有何不同?

keras max-pooling

41
推荐指数
1
解决办法
2万
查看次数

Max pool layer vs Convolution with stride performance

在大多数体系结构中,conv层后面跟着一个池化层(max/avg等).由于这些汇集层只是选择前一层的输出(即转换),我们是否可以使用带有步幅2的卷积并期望类似的精度结果和减少的过程需求?

deep-learning conv-neural-network max-pooling

29
推荐指数
1
解决办法
1万
查看次数

如何使用numpy在二维数组上执行max/mean pooling

给定2D(M x N)矩阵和2D内核(K x L),我如何返回一个矩阵,该矩阵是使用图像上给定内核的最大或均值池的结果?

如果可能的话,我想使用numpy.

注意:M,N,K,L可以是偶数或奇数,并且它们不需要彼此完全可分,例如:7x5矩阵和2x2内核.

例如,最大池:

matrix:
array([[  20,  200,   -5,   23],
       [ -13,  134,  119,  100],
       [ 120,   32,   49,   25],
       [-120,   12,   09,   23]])
kernel: 2 x 2
soln:
array([[  200,  119],
       [  120,   49]])
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matrix max-pooling

26
推荐指数
3
解决办法
2万
查看次数

numpy 在另一个数组中创建最大连续对的数组

我有一个 numpy 数组:

A = np.array([8, 2, 33, 4, 3, 6])
Run Code Online (Sandbox Code Playgroud)

我想要的是创建另一个数组 B,其中每个元素都是 A 中 2 个连续对的成对最大值,所以我得到:

B = np.array([8, 33, 33, 4, 6])
Run Code Online (Sandbox Code Playgroud)

关于如何实施的任何想法?
关于如何为超过 2 个元素实现这一点的任何想法?(同样的事情,但对于连续的 n 个元素)

编辑:

答案给了我解决这个问题的方法,但是对于 n 大小的窗口情况,是否有更有效的方法不需要循环?

编辑2:

事实证明,该问题等同于询问如何对具有大小为 n 的窗口的列表执行 1d 最大池化。有谁知道如何有效地实现这一点?

python numpy max-pooling

15
推荐指数
4
解决办法
519
查看次数

TensorFlow:为什么avg_pool忽略一个跨度维度?

我试图跨越渠道维度,以下代码表现出令人惊讶的行为.我希望tf.nn.max_pool并且tf.nn.avg_pool在输入完全相同的参数时应该产生相同形状的张量.不是这种情况.

import tensorflow as tf

x = tf.get_variable('x', shape=(100, 32, 32, 64),
        initializer=tf.constant_initializer(5), dtype=tf.float32)
ksize = (1, 2, 2, 2)
strides = (1, 2, 2, 2)
max_pool = tf.nn.max_pool(x, ksize, strides, padding='SAME')
avg_pool = tf.nn.avg_pool(x, ksize, strides, padding='SAME')
print(max_pool.shape)
print(avg_pool.shape)
Run Code Online (Sandbox Code Playgroud)

这打印

$ python ex04/mini.py 
(100, 16, 16, 32)
(100, 16, 16, 64)
Run Code Online (Sandbox Code Playgroud)

显然,我误解了一些事情.

python-3.x deep-learning tensorflow max-pooling

9
推荐指数
1
解决办法
204
查看次数

最大池化层的反向传播:多个最大值

我目前正在用普通的 numpy 实现一个 CNN,并且有一个关于最大池层反向传播的特殊情况的简短问题:

虽然很明显非最大值的梯度消失了,但我不确定切片的几个条目等于最大值的情况。严格来说,函数在这个“点”上不应该是可微的。但是,我认为可以从相应的次微分中选择一个次梯度(类似于在 x=0 处为 Relu 函数选择次梯度“0”)。

因此,我想知道简单地形成关于最大值之一的梯度并将剩余的最大值视为非最大值是否就足够了。

如果是这种情况,是否建议随机选择最大值以避免偏差,还是总是选择第一个最大值?

python backpropagation deep-learning conv-neural-network max-pooling

9
推荐指数
1
解决办法
837
查看次数

在 PyTorch 的“MaxPool2D”中,是否根据“ceil_mode”添加了填充?

MaxPool2D填充默认设置为 0 并且ceil_mode也设置为False。现在,如果我有大小的输入7x7kernel=2,stride=2输出形状变得3x3,但是当我使用ceil_mode=True,它成为4x4,这是有意义的,因为(如果下述式是正确的),用于7x7output_shape将是3.5x3.5并且取决于ceil_mode这将是任一3x34x4

现在,我的问题是,如果ceil_mode=True, 会更改默认值padding吗?

如果是这样,那么它是如何添加填充的,即它是先在左侧还是在右侧,先向上还是向下添加填充?

padding neural-network deep-learning max-pooling pytorch

8
推荐指数
1
解决办法
2371
查看次数

什么是TensorFlow中Max Pooling 2D Layer的输出张量?

我试图了解有关张量流的一些基础知识,并且在阅读最大池2D图层的文档时遇到困难:https://www.tensorflow.org/tutorials/layers#pooling_layer_1

这是max_pooling2d的指定方式:

pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)

在哪里conv1有一个形状的张量[batch_size, image_width, image_height, channels],具体在这种情况下它是[batch_size, 28, 28, 32].

所以我们的输入是一个形状的张量:[batch_size, 28, 28, 32].

我对最大池2D图层的理解是它将应用大小的过滤器pool_size(在这种情况下为2x2)并且移动滑动窗口stride(也是2x2).这意味着图像widthheight图像都将减半,即每个通道最终会有14x14像素(总共32个通道),这意味着我们的输出是一个形状为张量的张量:[batch_size, 14, 14, 32].

但是,根据上面的链接,输出张量的形状是[batch_size, 14, 14, 1]:

Our output tensor produced by max_pooling2d() (pool1) has a shape of 
[batch_size, 14, 14, 1]: the 2x2 filter reduces width and height by 50%.
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

32如何转换为1?

他们稍后会应用相同的逻辑:https://www.tensorflow.org/tutorials/layers#convolutional_layer_2_and_pooling_layer_2

但这次是正确的,即 …

python tensorflow max-pooling

7
推荐指数
1
解决办法
9823
查看次数

池化与池化时间

我从概念上理解最大/总和池中发生的CNN层操作是什么,但是我看到这个术语"随时间推移的最大池",或者"随时间推移的总和池"(例如,"句子分类的卷积神经网络") Yoon Kim的论文).有什么不同?

nlp machine-learning convolution neural-network max-pooling

7
推荐指数
2
解决办法
3178
查看次数

具有Maxpooling1D和channel_first的Keras模型

我目前尝试在Keras中为时间序列分类构建顺序模型时遇到问题.我想处理channels_first数据,因为从处理的角度来看它更方便(不过我只使用一个通道).这工作得很好了Convolution1D我使用的图层,我可以指定data_sample='channels_first',但不知何故,这不会对工作Maxpooling1D,因为它似乎不具有此选项.

我想要构建的模型结构如下:

model = Sequential()
model.add(Convolution1D(filters=16, kernel_size=35, activation='relu', input_shape=(1, window_length), data_format='channels_first'))
model.add(MaxPooling1D(pool_size=5)
model.add(Convolution1D(filters=16, kernel_size=10, activation='relu', data_format='channels_first'))
[...] #several other layers here
Run Code Online (Sandbox Code Playgroud)

window_length = 5000添加所有三个图层后,我得到以下摘要:

_________________________________________________________________
Layer (type)                 Output Shape              Param #  
=================================================================
conv1d_1 (Conv1D)           (None, 32, 4966)          1152     
_________________________________________________________________
max_pooling1d_1 (MaxPooling1 (None, 4, 4966)           0        
_________________________________________________________________
conv1d_2 (Conv1D)           (None, 16, 4957)          656      
=================================================================
Total params: 1,808
Trainable params: 1,808
Non-trainable params: 0
Run Code Online (Sandbox Code Playgroud)

现在,我想知道这是否正确,因为我期望第三维(即特征图中的神经元数)而不是第二维(即过滤器的数量)被汇集层减少?在我看来,MaxPooling1D不承认channels_first订购和而Keras文档说存在一个关键词data_format …

python machine-learning conv-neural-network keras max-pooling

7
推荐指数
1
解决办法
773
查看次数