net = batch_norm(Conv2DLayer(net,
num_filters=32,
filter_size=7,
pad='same',
nonlinearity=elu,
W=GlorotUniform('relu')))
Здесь я применяю серию слоев, которая идет в net-> conv2d-> batch_norm-> elu. Меня смущает, что relu применяется в качестве входного параметра для globaluniform. Означает ли это, что relu применяется к набору весов? Документация смущает меня немного дальше.
Коэффициент масштабирования для весов. Установите значение 1,0 для линейного и сигмовидного
единиц, в «relu» или sqrt (2) для выпрямленных линейных единиц, и в
sqrt (2 / (1 + альфа ** 2)) для утечек выпрямленных линейных единиц с утечкой
альфа. Другие передаточные функции могут нуждаться в других факторах.
Меня смущает утверждение 'relu' или sqrt (2).
Вот как я интерпретирую этот поток кода в тензорном потоке.
with tf.variable_scope(name, reuse=tf.AUTO_REUSE):
with tf.variable_scope('conv_1', reuse=tf.AUTO_REUSE):
w = tf.get_variable(name='w',
shape=[ksize, ksize, layer.shape[3], ft_size],
dtype=dtype, initializer=initializer)
w = tf.relu(w)
b = tf.get_variable(name='b',
shape=[ft_size],
dtype=dtype,
initializer=tf.zeros_initializer())
layer = tf.nn.conv2d(input=layer, filter=w, strides=strides, padding=padding)
layer = tf.add(layer, b)
layer = tf.layers.batch_normalization(layer, training=is_training, momentum=0.9, epsilon=1e-4)
layer = tf.nn.elu(layer)