tf.layersが使用するtf.layers.conv2d(...)

2918 ワード

tfを使用する.layers.conv 2 d()によるボリューム操作
inputs1 = tf.placeholder(tf.float32,[None,32,32,3])
output1 = tf.layers.conv2d(inputs1,64,5)
output2 = tf.layers.conv2d(inputs1,64,5,padding='same')
output3 = tf.layers.conv2d(inputs1,64,5,strides=(2,2),padding='same')

print(output1.get_shape())
print(output2.get_shape())
print(output3.get_shape())

出力:(?,28,28,64)(?,32,32,64)(?,16,16,64)パラメータ:def conv 2 d(inputs,filters,kernel_size,strides=(1,1),padding=‘valid’,data_format=‘channels_last’, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer=None, bias_initializer=init_ops.zeros_initializer(), kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, trainable=True, name=None,reuse=None):パラメータ解釈:(1)input:ボリュームを作る必要がある入力画像を指し、Tensorであることが要求され、[batch,in_height,in_width,in_channels]のような画像を有し、具体的な意味は「訓練時に1つのbatchの画像数、画像の高さ、画像の幅、画像チャネル数」である.注意:これは4次元のTensorで、float 32とfloat 64の1つ(2)filters:整数、出力空間の次元数(すなわち、畳み込み中のフィルタ数)が要求される.(3)kernel_size:フィルタのサイズは、整数であれば幅が等しい.(4)strides:1つの整数、または2つの整数を含むメタグループ/キューであり、畳み込みの縦方向と横方向のステップ長を表す.1つの整数であれば横方向のステップ長は等しい.またstridesが1とdilation_rateが1と等しくない2つの場合は同時に存在しない.(5)padding:要素の枠線と要素の内容の間の空間を定義し、「valid」または「same」(大文字と小文字を区別しない).「valid」はエッジが埋め込まれていないことを示し、「same」はフィルタに塗りつぶして画像エッジに達することを示します.注:sameの場合、ステップ長が1の場合に生成されるfeature mapのみが入力値と等しくなります.paddingルールの紹介:validの場合:出力の幅の高さ
output_width = (in_width - filter_width + 1)/strides_width
ouput_height = (in_width - filter_width + 1)/strides_width       

sameケース:出力の幅とボリュームコアは関係ありません
out_height = in_height/strides_height
out_width = in_width/strides_width
    :
#pad_height:      pad_width:     
pad_height = max((out_height-1)*strides_height+filter_height-in_height,0)
pad_width = max((out_width-1)*strides_width+filter_width-in_width,0)
#                
pad_top = pad_height/2
pad_bottom = pad_height - pad_top
pad_left = pad_width/2
pad_right = pad_width - pad_left

(6)data_format:channels_last(デフォルト)またはchannels_firstは、入力次元の順序を表します.channels_Lastは、形状(batch,height,width,channels)を有する入力に対応し、channels_firstは、形状(batch,channels,height,width)を有する入力に対応する.(7)dilation_rate:2個の整数の整数またはメタグループ/リストで、拡張ボリュームの拡張率を指定します.すべての空間次元の同じ値を指定するために単一の整数であってもよいです.現在、dilation_rateの値を指定します!=1は任意のステップ値を指定します!=1は一致しません.(8)activation:アクティブ化機能で、線形アクティブ化を維持するために「None」に設定されています.(9)use_bias:Boolean,この層にバラツキが使用されているかどうか.(10)kernel_initializer:ボリュームカーネルの初期化プログラム.(11)bias_initializer:バイアスベクトルの初期化器,Noneの場合はデフォルト初期値設定項目を使用する.(12)kernel_regularizer:ボリュームカーネルのオプション正規化器.(13)bias_regularizer:バイアスベクトルのオプション正規化器.(14)activity_regularizer:出力のオプション正規化関数.(15)kernel_constraint:Optimizerによって更新カーネルに適用されるオプション投影関数(例えば、レイヤウェイトを実現するためのノルム制約や値制約).この関数は、投影する変数を入力とし、投影変数(同じ形状でなければならない)を返さなければならない.非同期分散型トレーニングを行う場合、使用制約は安全ではない.(16)trainable:Booleanは、Trueの場合、グラフセットGraphKeys.TRAINABLE_VARIABLLESに変数を追加する(参考資料tf.Variableを参照).(17)name:文字列、レイヤーの名前.