как нормализовать вывод нейронной сети в tensorflow 1

#tensorflow #deep-learning #neural-network

Вопрос:

Я создал нейронную сеть, используя tensorflow 1.x, как показано ниже:

 def coder(x):
    layer_1 = tf.nn.relu(tf.add(tf.matmul(x, weights['encoder_h1']),biases['encoder_b1']))
    layer_2 = tf.nn.relu(tf.add(tf.matmul(layer_1, weights['encoder_h2']), biases['encoder_b2']))
    layer_3 = tf.nn.tanh(tf.add(tf.matmul(layer_2, weights['encoder_h3']),biases['encoder_b3']))
    return layer_3
 

Что мне нужно, так это нормализовать выходные данные этой нейронной сети. Я пытался сделать это вручную с помощью:

 layer_4 = (layer_3  * tf.sqrt(tf.cast(tf.shape(layer_3 )[0], dtype=tf.float32))) / tf.norm(layer_3 ) 
return layer_4 
 

Но я думаю, что этот способ неверен, есть ли способ нормализовать вывод нейронной сети, например, добавить слой нормализации или что-то в этом роде.

Комментарии:

1. Tensorflow 2.0 имеет функцию нормализации выходных данных нейронной сети. Эта функция доступна в tf.keras, то есть tf.keras.layers.LayerNormalization . Более подробную информацию о нормализации уровня тензорного потока можно найти здесь . Спасибо!

2. @TFer как насчет Tensorflow 1.15 ? есть ли какое-либо решение для этого ?

3. Насколько я понимаю, нормализация доступна только в Tf 2.x.