问题标签 [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.
neural-network - 如何创建具有动态输入的神经网络?
这个问题是一个棘手的问题:我如何为神经网络提供动态输入?
回答这个问题肯定会有助于将深度学习用于计算机视觉和语音识别以外的应用程序的现代人工智能的进步。我将为神经网络的外行进一步解释这个问题。
让我们以这个简单的例子为例:
假设您需要知道在“井字游戏”游戏中获胜、失败或平局的概率。
所以我的输入可能是一个表示状态的 [3,3] 矩阵(1-You,2-Enemy,0-Empty):
假设我们已经有一个先前训练的隐藏层,一个 [3,1] 权重矩阵:
因此,如果我们使用一个简单的激活函数,该函数基本上由两个y(x)=W*x之间的矩阵相乘组成,我们会在输出中得到这个 [3,1] 矩阵:
即使没有 softmax 函数,您也可以判断出最高概率是平局。
但是,如果我想让同样的神经网络在 5x5 井字游戏中工作呢?
它具有与 3x3 相同的逻辑,只是更大。神经网络应该能够处理它
我们会有类似的东西:
但是这种乘法是不可能计算出来的。我们将不得不添加更多层和/或更改我们之前训练的层并重新训练它,因为未经训练的权重(在这种情况下初始化为 0)会导致神经网络失败,如下所示:
因为我们扩展了第一层,又增加了一个零权重的新层,我们的结果显然是没有定论的。如果我们应用一个 softmax 函数,我们将意识到神经网络为每个可能的结果返回 33.3% 的机会。我们需要再次训练它。
显然我们想要创建可以适应不同输入大小的通用神经网络,但是我还没有想到解决这个问题的方法!所以我想也许stackoverflow可以提供帮助。千千万万个脑袋比一个脑袋好。有任何想法吗?
tensorflow - 什么是 tensorflow 中 Caffe 的 Maxpooling 的等价物?
我很困惑我们如何定义max-pooling
. Tensorflow
文档含糊不清,没有很好地解释参数。
在汇集文档中它只说:
ksize:长度 >= 4 的整数列表。输入张量的每个维度的窗口大小。strides:长度 >= 4 的整数列表。输入张量的每个维度的滑动窗口的步幅。
和
每个池化操作使用大小为 ksize 的矩形窗口,由偏移步幅分隔。例如,如果 strides 是所有窗口,则使用所有窗口,如果 strides 是所有两个窗口,则每个维度都使用其他窗口,等等。
下面Caffe
的max-pooling
in等价于Tensorflow
什么?
我不确定它们是否意味着所有一个跨步 [1,1,1,1] 的重叠池和非重叠 [2,2,2,2] 说
如果 strides 是所有窗口,则使用每个窗口,如果 strides 是所有两个窗口,则每个维度都使用其他窗口,等等。
python - NumPy Array Reshape 但如何更改轴以进行池化?
我有一个 8x8 矩阵,如下所示:
我的窗口是 2x2。我想要做的是将四个数字放在一起(上下数字)用于池化。示例输出如下所示:
我使用的是print arr.reshape(16,2,2)
我无法理解的是如何为这个要求设置轴。我的输出是:
请解释在这种情况下如何应用轴。或者,如果他们是获得最大池的更好方法,请提及。
注意:所有这些都是为了最大池化。我在 python 上使用 NumPy、SciPy。
python - 如何使用 numpy 在二维数组上执行最大/均值池化
给定一个 2D(M x N) 矩阵和一个 2D Kernel(K x L),我如何返回一个矩阵,它是在图像上使用给定核进行最大或均值池化的结果?
如果可能的话,我想使用 numpy 。
注意:M、N、K、L 既可以是偶数也可以是奇数,它们不需要完全可被彼此整除,例如:7x5 矩阵和 2x2 核。
例如最大池:
image-processing - 关于最大池化?
最大池在视觉中很有用,原因有两个:
通过消除非最大值,它减少了上层的计算。
它提供了一种平移不变性。想象一下将一个最大池化层与一个卷积层级联起来。有 8 个方向可以将输入图像平移一个像素。如果在 2x2 区域上进行最大池化,则这 8 种可能配置中的 3 种将在卷积层产生完全相同的输出。对于 3x3 窗口上的最大池化,这会跳转到 5/8。
由于它为位置提供了额外的鲁棒性,因此最大池化是一种减少中间表示维数的“智能”方式。
看不懂,什么8 directions
意思?什么
“如果在 2x2 区域上进行最大池化,则这 8 种可能配置中的 3 种将在卷积层产生完全相同的输出。对于 3x3 窗口上的最大池化,这将跳转到 5/8。”
意思是?
python - TensorFlow 中 Max Pooling 2D 层的输出张量是多少?
我试图了解有关 tensorflow 的一些基础知识,但在阅读最大池化 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)。这意味着图像的width
和height
都将减半,即我们最终将得到每个通道 14x14 像素(总共 32 个通道),这意味着我们的输出是一个形状为: 的张量[batch_size, 14, 14, 32]
。
但是,根据上面的链接,输出张量的形状是[batch_size, 14, 14, 1]
:
我在这里想念什么?
32 是如何转换为 1 的?
他们稍后在这里应用相同的逻辑:https ://www.tensorflow.org/tutorials/layers#convolutional_layer_2_and_pooling_layer_2
但这一次是正确的,即[batch_size, 14, 14, 64]
变为[batch_size, 7, 7, 64]
(通道数相同)。
keras - Keras 的 MaxPooling1D 和 GlobalMaxPooling1D 函数有什么区别?
MaxPooling1D 和 GlobalMaxPooling1D 都被描述为时间数据的最大池化操作。
keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')
我了解 GlobalMaxPooling1D 不接受输入参数。
keras.layers.pooling.GlobalMaxPooling1D()
我只是想直观地了解他们两个在工作方式上的不同之处?
deep-learning - Max pool layer vs Convolution with stride performance
In most of the architectures, conv layers are being followed by a pooling layer (max / avg etc.). As those pooling layers are just selecting the output of previous layer (i.e. conv), can we just use convolution with stride 2 and expect the similar accuracy results with reduced process need?
machine-learning - keras vgg 16 形状错误
我试图将具有以下形状的数据拟合到预训练的 keras vgg19 模型中。
图像输入形状是(32383, 96, 96, 3)
标签形状(32383, 17)
,我得到了这个错误
在这条线上
这是我定义模型的方式
maxpool 如何给我一个 2d 张量而不是 4D 张量?我正在使用来自 keras.applications.vgg16 的原始模型。我该如何解决这个错误?
matlab - Caffe vs Matlab中描述的CNN模型中池化层输出大小的不兼容
我有一个 Caffe CNN 模型,我正在尝试使用importCaffeNetwork
命令将其导入 MATLAB,该命令将 prototxt 和 caffemodel 文件作为输入参数。
但是,我收到此错误:
错误似乎与MATLAB和CAFFE中池化层的输出大小计算的差异有关,前者使用ceil
,后者使用floor
函数。
它是问题的真正根源吗?我能做些什么来解决这个问题?