我已经使用tf.estimator.Estimator定义了一个神经网络,需要在图层中添加自定义操作。特别是我想将logit层规范化为特定规范C,然后将高斯噪声独立添加到每个logit。我这样做的是:
initial_logits = tf.keras.layers.Dense(units=params['num_classes']).apply(y)
l2_normalized_logits = tf.keras.layers.Lambda(lambda x:tf.multiply(tf.math.l2_normalize(x), C)).apply(initial_logits)
gauss = tf.distributions.Normal(loc=0.0, scale=params['logit_noise'])
logits = tf.keras.layers.Lambda(lambda x: tf.add(x, gauss.sample(params['num_classes']))).apply(l2_normalized_logits)
但是使用Lambda层会得到非常奇怪的结果。
我正在使用tensorflow 1.12。