tensorflow: arg_scope()

with arg_scope():網絡

1.容許咱們設定一些共享參數,並將其進行保存,必要時還能夠嵌套覆蓋函數

2.在指定的函數調用時,能夠將一些默認參數塞進去。spa

接下來看一個tensorflow自帶的例子。input

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')

# arg_scope()參數解釋:
參數1:
[layers.conv2d]表示要執行操做的網絡,你也能夠繼續添加其它網絡層,例如池化層。
參數2,3等就是你要設定默認的參數。
當咱們第一次調用layers.conv2d的時候。卷積層的操做其實是這樣的:
layers.conv2d(inputs, 64, [11, 11], 4, padding='VALID',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv1')

當咱們第二次調用layers.conv2d的時候,卷積層的操做其實是這樣的:
layers.conv2d(inputs, 256, [5, 5], padding='SAME',
initializer=layers.variance_scaling_initializer(),
regularizer=layers.l2_regularizer(0.05), scope='conv2')

也就是說,當你在調用相關的網絡層的時候(參數1所包含的網絡層),你有設定參數,那麼參數按照你設定的;若是你沒有設定參數,那麼就用默認的(預先設定好的)
相關文章
相關標籤/搜索