私はニューラルネットとTensorFlowの初心者であり、 arg_scope
。
「やりたいこと」の辞書を特定の変数を持つ特定の層にまとめる方法だと私には思えます。私が間違っている場合は修正してください。それが何であるか、初心者にどのように正確に説明しますか?
畳み込み層を定義するときは、常に同じパディングタイプと同じイニシャライザを使用でき、同じ畳み込みサイズを使用することもできます。プーリングについては、おそらく同じ2x2
プーリングサイズを常に使用していることもあります。等々。
arg_scope
は、同じ引数を同じレイヤータイプに何度も繰り返し提供するのを避ける方法です。
ソースドキュメント の例:
tf.contrib.framework.arg_scope
の使用例:from third_party.tensorflow.contrib.layers.python import layers arg_scope = tf.contrib.framework.arg_scope with arg_scope([layers.conv2d], padding='SAME', initializer=layers.variance_scaling_initializer(), regularizer=layers.l2_regularizer(0.05)): net = layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID', scope='conv1') net = layers.conv2d(net, 256, [5, 5], scope='conv2')
conv2d
の最初の呼び出しは次のように動作します。layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID', initializer=layers.variance_scaling_initializer(), regularizer=layers.l2_regularizer(0.05), scope='conv1')
conv2d
の2回目の呼び出しでも、パディングにarg_scope
のデフォルトが使用されます。layers.conv2d(inputs, 256, [5, 5], padding='SAME', initializer=layers.variance_scaling_initializer(), regularizer=layers.l2_regularizer(0.05), scope='conv2')
arg_scope
を再利用する方法の例:with arg_scope([layers.conv2d], padding='SAME', initializer=layers.variance_scaling_initializer(), regularizer=layers.l2_regularizer(0.05)) as sc: net = layers.conv2d(net, 256, [5, 5], scope='conv1') .... with arg_scope(sc): net = layers.conv2d(net, 256, [5, 5], scope='conv2')