在使用tf.layers中定义的层时,是否可以添加L2正则化?
在我看来,由于tf.layers是一个高级包装器,因此没有简单的方法来访问过滤器权重.
使用tf.nn.conv2d
regularizer = tf.contrib.layers.l2_regularizer(scale=0.1)
weights = tf.get_variable(
name="weights",
regularizer=regularizer
)
#Previous layers
...
#Second layer
layer 2 = tf.nn.conv2d(
input,
weights,
[1,1,1,1],
[1,1,1,1])
#More layers
...
#Loss
loss = #some loss
reg_variables = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
reg_term = tf.contrib.layers.apply_regularization(regularizer, reg_variables)
loss += reg_term
Run Code Online (Sandbox Code Playgroud)
现在用tf.layers.conv2d会是什么样子?
谢谢!
由于没有明确定义权重,我如何将它们传递给摘要编写器?
举个例子:
conv1 = tf.layers.conv2d(
tf.reshape(X,[FLAGS.batch,3,160,320]),
filters = 16,
kernel_size = (8,8),
strides=(4, 4),
padding='same',
kernel_initializer=tf.contrib.layers.xavier_initializer(),
bias_initializer=tf.zeros_initializer(),
kernel_regularizer=None,
name = 'conv1',
activation = tf.nn.elu
)
Run Code Online (Sandbox Code Playgroud)
=>
summarize_tensor(
??????
)
Run Code Online (Sandbox Code Playgroud)
谢谢!