def _build(self, X):
"""Build the graph of this layer."""
n_samples, input_shape = self._get_X_dims(X)
Wdim = tuple(input_shape) + (self.output_dim,)
W = tf.Variable(tf.random_normal(shape=Wdim, seed=next(seedgen)),
name="W_map")
# We don't want to copy tf.Variable W so map over X
Net = tf.map_fn(lambda x: tf.matmul(x, W), X)
# Regularizers
penalty = self.l2 * tf.nn.l2_loss(W) + self.l1 * _l1_loss(W)
# Optional Bias
if self.use_bias is True:
b = tf.Variable(tf.random_normal(shape=(1, self.output_dim),
seed=next(seedgen)), name="b_map")
Net += b
penalty += self.l2 * tf.nn.l2_loss(b) + self.l1 * _l1_loss(b)
return Net, penalty
评论列表
文章目录