BN 구현
3132 단어 신경 네트워크
def batch_norm(x, n_out,train, eps=1e-05, decay=0.99,affine=True, name=None):
with tf.variable_scope(name, default_name='BatchNorm2d'):
moving_mean = tf.get_variable('mean', [n_out],
initializer=tf.zeros_initializer,
trainable=False)
moving_variance = tf.get_variable('variance', [n_out],
initializer=tf.ones_initializer,
trainable=False)
train=tf.convert_to_tensor(train)
def mean_var_with_update():
mean, variance = tf.nn.moments(x, [0,1,2], name='moments')
# train moving average inference。
from tensorflow.python.training.moving_averages import assign_moving_average
with tf.control_dependencies([assign_moving_average(moving_mean, mean, decay),
assign_moving_average(moving_variance, variance, decay)]):
return tf.identity(mean), tf.identity(variance)
#train=True batch——mean/var,
# Train=False moving_mean moving_variance, train 。
mean, variance = tf.cond(train, mean_var_with_update, lambda: (moving_mean, moving_variance))
if affine:
beta = tf.Variable(tf.constant(0.0, shape=[n_out]),
name='beta', trainable=True)
gamma = tf.Variable(tf.constant(1.0, shape=[n_out]),
name='gamma', trainable=True)
x = tf.nn.batch_normalization(x, mean, variance, beta, gamma, eps)
else:
x = tf.nn.batch_normalization(x, mean, variance, None, None, eps)
return x
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단한 BP 신경 네트워크 구현텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.