オリジナル住所:
https://blog.csdn.net/jasonzzj/article/details/53930074
-------------------------------------------------- -------------------------------------
同じことは、出力特徴マップは、入力された特徴マップと同じ空間寸法を有することを意味します。ゼロパディングが均等に入力マップのすべての側面に、必要に応じて形状を一致させるために導入されます。
VALIDは、パディングを意味しません。
パディングは、畳み込みとプールの操作に使用することができます。
ここでは、例えばプール取ります:
あなたはASCIIアートのような場合:
この例では:
ノート:
|
"VALID"
一番右の列(または一番下の行)を削除されます。
"SAME"
余分な行が存在してもよい:パッド均等左右しようとするが、追加される列の量が奇数の場合、この例の場合のように、それは、右に追加の列を追加する(同じロジックは、垂直方向に適用されます下部にゼロの)。
不同的padding方式,VALID是采用丢弃的方式,比如上述的input_width=
13
,只允许滑动
2
次,多余的元素全部丢掉。
SAME的方式,采用的是补全的方式,对于上述的情况,允许滑动
3
次,但是需要补
3
个元素,左奇右偶,在左边补一个
0
,右边补
2
个
0 。
TensorFlowコンボリューションの 例では、との違いについての概要与え SAME
とし VALID
:
-
ための
SAME
パディング、出力の高さと幅は、次のように計算されます。out_height = CEIL(フロート(in_height)/フロート(ストライド[1]))
out_width = CEIL(フロート(in_width)/フロート(ストライド[2]))
そして
-
ための
VALID
パディング、出力の高さと幅は、次のように計算されます。out_height = CEIL(フロート(in_height - filter_height + 1)/フロート(ストライド[1]))
out_width = CEIL(フロート(in_width - filter_width + 1)/フロート(ストライド[2]))
リマーク
#SAME 向上取整
#VALID 向下取整
x = tf.constant([[
1
.,
2
.,
3
.],
[
4
.,
5
.,
6
.]])
x = tf.reshape(x, [
1
,
2
,
3
,
1
]) # give a shape accepted by tf.nn.max_pool
valid_pad = tf.nn.max_pool(x, [
1
,
2
,
2
,
1
], [
1
,
2
,
2
,
1
], padding=
'VALID'
)
same_pad = tf.nn.max_pool(x, [
1
,
2
,
2
,
1
], [
1
,
2
,
2
,
1
], padding=
'SAME'
)
valid_pad.get_shape() == [
1
,
1
,
1
,
1
] # valid_pad is [
5
.]
same_pad.get_shape() == [
1
,
1
,
2
,
1
] # same_pad is [
5
.,
6
.]
-------------------------------------------------- -------------------------------------------------- ------------------------------
参考住所:
https://www.2cto.com/kf/201708/673033.html
https://www.tensorflow.org/versions/r0.9/api_docs/python/nn.html