tf.nn.max_pool()とtf.nn.avg_pool()は、最大TensorFlowプールの関数であり、比較コア畳み込みニューラルネットワークの方法で、平均をプール。
いくつかのコンボリューションは、非常に似ている、あなたが参照できるTensorFlow基礎(7) - tf.nn.conv2d()(コードコメント付き)
二つの関数が低いtf.nn.max_poolを説明するために、同じ方法を呼び出し()を説明するための一例として適用されます。
関数のフォーマット:
tf.nn.max_pool(value, ksize, strides, padding, name=None)
パラメータ:
第1のパラメータ値:入力画像ニーズプール行われるため、feaureマップを入力し、コンボリューションの背後のプールからです。形状は[in_channels、バッチ、in_height、in_width]です。
バッチ:バッチは、トレーニング画像の数
in_height:入力画像の高さを
入力画像の幅:in_width
in_channels:の入力特徴マップの数
第2のパラメータksize:畳み込みフィルタと同様に、プールのウィンドウサイズは、あります一次元の長さが4のアレイが、アレイの最初と最後は1、すなわち[1、高さ、幅、1でなければなりません ]。これは、バッチ・プーリングおよびチャネル上で行うことができない、プールフィルタ層という。実際には、最も使用されるフィルタサイズである[1、2、2、1]又は[1、3、3、1]。高さ:フィルタの高
フィルタの幅:幅
三番目の引数のストライド:異なる寸法上のステップは、長さ4の1次元ベクトル、[1、ストライド、ストライド、 1]、 そして最後最初の次元次元の数値的な要件は1でなければなりません。アクティブマトリクスのコンボリューション工程は唯一の層の長さと幅のため。第四パラメータパディング:文字列型、「SAME」と「VALID」、「SAME」境界の境界値を考慮するかどうかを考える時間が不十分は考慮されていない周囲の、「VALID」の境界で満たされています。。
戻りテンソル、依然として形状[バッチ、高さ、幅、チャネル ] この形態です。
一例として使用tf.nn.max_pool()関数を説明するために以下:
入力は、番号が1で、フィルタのサイズは3×3サイズの特徴マップである[1、2、2、1]、ステップサイズはパディング値「VALID」[1,1,1,1]、であり、最後の特徴マップは、2 * 2を取得します。図1はテンソルの最終出力[1,2,2,1]のための形状です。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import tensorflow as tf
value = tf.Variable(tf.random_normal([1, 3, 3, 1]))
ksize = [1, 2, 2, 1]
pool = tf.nn.max_pool(value, ksize, strides=[1, 1, 1, 1], padding='VALID')
with tf.Session() as sess:
# 初始化变量
op_init = tf.global_variables_initializer()
sess.run(op_init)
print("value的值为:")
print(sess.run(value))
print("池化值为:")
print(sess.run(pool))
次のように実装プロセスは以下のとおりです。
結果: