[予約] Tensorflow 2つのパディングの種類と有効なSAME

オリジナル住所:

https://blog.csdn.net/jasonzzj/article/details/53930074

 

 

 

-------------------------------------------------- -------------------------------------

 

 

 

 

同じことは、出力特徴マップは、入力された特徴マップと同じ空間寸法を有することを意味します。ゼロパディングが均等に入力マップのすべての側面に、必要に応じて形状を一致させるために導入されます。

 

 

VALIDは、パディングを意味しません。

 

 

 

 

 

パディングは、畳み込みとプールの操作に使用することができます。

 

 

ここでは、例えばプール取ります:

 

 

 

 

 

投票ダウン

あなたはASCIIアートのような場合:

  • "VALID" =パディングなし:

    1. 入力1 2 3 4 5 6 7 8 9 10 11 12 13
    2. | ________________ | ドロップ
    3. | _________________ |
  • "SAME" =ゼロパディングを持ちます。

    1. パス| | パス
    2. 入力 0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 | 0 0
    3. | ________________ |
    4. | _________________ |
    5. | ________________ |

この例では:

  • 入力幅= 13
  • フィルタ幅= 6
  • ストライド= 5

ノート:

  • "VALID" 一番右の列(または一番下の行)を削除されます。
  • "SAME" 余分な行が存在してもよい:パッド均等左右しようとするが、追加される列の量が奇数の場合、この例の場合のように、それは、右に追加の列を追加する(同じロジックは、垂直方向に適用されます下部にゼロの)。

 

 

 

 

"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

 

おすすめ

転載: www.cnblogs.com/devilmaycry812839668/p/10930405.html