- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试理解 tf.nn.avg_pool、tf.nn.max_pool、tf.nn.conv2d 中的 strides 参数。
strides: A list of ints that has length >= 4. The stride of the sliding window for each dimension of the input tensor.
我的问题是:
tf.reshape(_X,shape=[-1, 28, 28, 1])
。为什么是 -1?遗憾的是,文档中使用 -1 进行 reshape 的示例并不能很好地适应这种情况。
最佳答案
池化和卷积运算在输入张量上滑动一个“窗口”。使用 tf.nn.conv2d
例如:如果输入张量有 4 个维度:[batch, height, width, channels]
,那么卷积在 height, width
维度上的 2D 窗口上运行.
strides
确定窗口在每个维度上的移动量。典型用法将第一个(批处理)和最后一个(深度)步幅设置为 1。
让我们使用一个非常具体的示例:在 32x32 灰度输入图像上运行二维卷积。我说灰度是因为输入图像的深度=1,这有助于保持简单。让该图像看起来像这样:
00 01 02 03 04 ...
10 11 12 13 14 ...
20 21 22 23 24 ...
30 31 32 33 34 ...
...
让我们在单个示例(批量大小 = 1)上运行 2x2 卷积窗口。我们将给卷积一个输出 channel 深度为 8。
卷积的输入具有 shape=[1, 32, 32, 1]
。
如果您指定 strides=[1,1,1,1]
和 padding=SAME
,那么过滤器的输出将为 [1, 32, 32 , 8]。
过滤器将首先创建一个输出:
F(00 01
10 11)
然后为:
F(01 02
11 12)
等等。然后它会移动到第二行,计算:
F(10, 11
20, 21)
然后
F(11, 12
21, 22)
如果您指定 [1, 2, 2, 1] 的步幅,则不会重叠窗口。它将计算:
F(00, 01
10, 11)
然后
F(02, 03
12, 13)
池化操作符的步幅操作类似。
问题 2:为什么为卷积网络跨步 [1, x, y, 1]
第一个是批处理:您通常不想跳过批处理中的示例,或者您不应该首先包含它们。 :)
最后 1 是卷积的深度:出于同样的原因,您通常不希望跳过输入。
conv2d 运算符更通用,因此您可以创建沿其他维度滑动窗口的卷积,但这不是卷积网络中的典型用途。典型的用途是在空间上使用它们。
为什么要 reshape 为 -1 -1 是一个占位符,表示“根据需要调整以匹配完整张量所需的大小”。这是一种使代码独立于输入批量大小的方法,这样您就可以更改管道,而不必在代码中的任何地方调整批量大小。
关于python - Tensorflow 大步论证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34642595/
这个问题已经有答案了: What is the purpose of the `self` parameter? Why is it needed? (26 个回答) 已关闭 9 年前。 我已经用 J
R 中 ~. 参数的含义是什么? 例如plot(~.,xyz..) 我已经看到这个论点在各种情况下多次使用,并且由于很难在谷歌上有意义地搜索符号,所以我几乎没有取得成功。 最佳答案 这是一个公式,采用
我是 Python 的新手。我不明白如何/为什么使用 self 参数: class Person: def __init__(self, name): self.name =
我是一名优秀的程序员,十分优秀!