Khi xác định các lớp co giãn, bạn luôn có thể sử dụng cùng loại đệm và cùng bộ khởi tạo, và thậm chí có thể cùng kích thước chập chững. Để bạn gộp nhóm, có thể bạn cũng luôn sử dụng cùng kích thước tổng hợp 2x2
. Và cứ thế.
Ví dụ về cách sử dụng 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')
Cuộc gọi đầu tiên conv2d
sẽ cư xử như sau:
layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv1')
Cuộc gọi thứ hai để conv2d
cũng sẽ sử dụng sốmặc định 0 's cho padding:
layers.conv2d(inputs, 256, [5, 5], padding='SAME',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv2')
Ví dụ về làm thế nào để tái sử dụng một 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')