【发布时间】:2019-09-13 06:00:40
【问题描述】:
我尝试对玩具集 [[1,2],[5,4] 进行批量标准化。 在axis=0之间进行归一化,我们得到
#[[-1/sqrt(2),-1/sqrt(2)],[1/sqrt(2), 1/sqrt(2)]]
但是,我的 layer(axis=0) 和 layer(axis=1) 都给出了不正确的结果。
X = tf.constant([[1,2],[5,4]],dtype = tf.float32)
layer = keras.layers.BatchNormalization()
hidden = layer(X)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer(axis=0))
print(sess.run(layer.trainable_weights))
print(sess.run(hidden))
#results
#[array([1., 1.], dtype=float32), array([0., 0.], dtype=float32)]
#[[0.9995004 4.997502 ]
# [1.9990008 3.9980016]]
X = tf.constant([[1,2],[5,4]],dtype = tf.float32)
layer = keras.layers.BatchNormalization()
hidden = layer(X)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer(axis=1))
print(sess.run(layer.trainable_weights))
print(sess.run(hidden))
#results
#[array([1., 1.], dtype=float32), array([0., 0.], dtype=float32)]
#[[0.9995004 4.997502 ]
# [1.9990008 3.9980016]]
gamma=1 和 beta=0 如 trainable_weights 所示。那么这一层是如何工作的呢?
【问题讨论】:
-
这是this的副本
标签: python keras batch-normalization