def _discriminator_conv(self, states):
'''Convolve output of bidirectional RNN and predict the discriminator label.'''
with tf.variable_scope("Discriminator"):
W_conv = tf.get_variable('W_conv', [cfg.d_conv_window, 1, states.get_shape()[2],
cfg.hidden_size // cfg.d_conv_window],
initializer=tf.contrib.layers.xavier_initializer_conv2d())
b_conv = tf.get_variable('b_conv', [cfg.hidden_size // cfg.d_conv_window],
initializer=tf.constant_initializer(0.0))
states = tf.expand_dims(states, 2)
conv = tf.nn.conv2d(states, W_conv, strides=[1, 1, 1, 1], padding='SAME')
conv_out = tf.reshape(conv, [2 * cfg.batch_size, -1,
cfg.hidden_size // cfg.d_conv_window])
conv_out = tf.nn.bias_add(conv_out, b_conv)
reduced = tf.nn.elu(tf.reduce_sum(conv_out, [1])) * 1e-1
output = utils.linear(reduced, 1, True, 0.0, scope='discriminator_output')
return output
评论列表
文章目录