TensorFlow1.x和TensorFlow2.x的layer实现上的区别
-
tf.contrib.layers.layer_norm vs. tf.keras.layers.LayerNormalization
该layer主要是对输入进行规整操作。计算公式大概是:
x = ( x - m ) / sqrt(v + esp)
x *= gamma
x += beta
其中,gamma和beta两个参数在训练中得到,m和v是做inference的时候计算,在tf1.0中,m和v是按x所有的值做平均算方差,而在tf2.0中是按行做均值方差。 -
tf.nn.rnn_cell.LSTMCell vs. tf.keras.layers.LSTM
该层的计算的差异在是否遗忘门输出加上bias,前者在遗忘门输出加了bias=1.0,后者没有添加。在参数存储上,tf1.x上的存储顺序是i,j,f,o,而tf2.x上存储的是i,f,j,o。
上面只是目前实践中发现的差异,后续有其他发现继续更新。