def apply(self, is_train, x, c, mask=None, context_mask=None):
c_w = tf.get_variable("context_weights", shape=(c.shape.as_list()[-1], self.n_out),
dtype=tf.float32, initializer=get_keras_initialization(self.init))
c_projected = tf.matmul(c, c_w)
x_w = tf.get_variable("input_weights", shape=(x.shape.as_list()[-1], self.n_out),
dtype=tf.float32, initializer=get_keras_initialization(self.init))
x_proj = tf.tensordot(x, x_w, [[2], [0]])
total = x_proj + tf.expand_dims(c_projected, 1)
if self.use_bias:
bias = tf.get_variable("bias", shape=self.n_out, dtype=tf.float32,
initializer=tf.zeros_initializer())
total += tf.expand_dims(tf.expand_dims(bias, 0), 0)
return get_keras_activation(self.activation)(total)
评论列表
文章目录