def synthesis_block(x, res, w0, w1, n_f): lrmul = 1.0 with tf.variable_scope('{:d}x{:d}'.format(res, res)): with tf.variable_scope('Conv0_up'): x = upscale2d_conv2d(x, n_f, kernel=3, gain=np.sqrt(2), lrmul=1.0) x = blur2d(x, [1, 2, 1]) x = apply_noise(x) x = apply_bias(x, lrmul=lrmul) x = tf.nn.leaky_relu(x) x = adaptive_instance_norm(x, w0) with tf.variable_scope('Conv1'): x = equalized_conv2d(x, n_f, kernel=3, gain=np.sqrt(2), lrmul=1.0) x = apply_noise(x) x = apply_bias(x, lrmul=lrmul) x = tf.nn.leaky_relu(x) x = adaptive_instance_norm(x, w1) return x
def synthesis_const_block(res, w0, w1, n_f): lrmul = 1.0 batch_size = tf.shape(w0)[0] with tf.variable_scope('{:d}x{:d}'.format(res, res)): with tf.variable_scope('Const'): x = tf.get_variable('const', shape=[1, n_f, 4, 4], dtype=tf.float32, initializer=tf.initializers.ones()) x = tf.tile(x, [batch_size, 1, 1, 1]) x = apply_noise(x) x = apply_bias(x, lrmul=lrmul) x = tf.nn.leaky_relu(x) x = adaptive_instance_norm(x, w0) with tf.variable_scope('Conv'): x = equalized_conv2d(x, n_f, kernel=3, gain=np.sqrt(2), lrmul=1.0) x = apply_noise(x) x = apply_bias(x, lrmul=lrmul) x = tf.nn.leaky_relu(x) x = adaptive_instance_norm(x, w1) return x