आप सही हैं, tf.nn.batch_normalization
बैच सामान्यीकरण को लागू करने के लिए केवल मूलभूत कार्यक्षमता प्रदान करता है। प्रशिक्षण के दौरान चलने वाले साधनों और भिन्नताओं का ट्रैक रखने के लिए आपको अतिरिक्त तर्क जोड़ना होगा, और अनुमान के दौरान प्रशिक्षित साधनों और भिन्नताओं का उपयोग करना होगा। आप एक बहुत ही सामान्य कार्यान्वयन के लिए इस example देख सकते हैं, लेकिन एक त्वरित संस्करण gamma
उपयोग नहीं करता है यहाँ है:
beta = tf.Variable(tf.zeros(shape), name='beta')
moving_mean = tf.Variable(tf.zeros(shape), name='moving_mean',
trainable=False)
moving_variance = tf.Variable(tf.ones(shape),
name='moving_variance',
trainable=False)
control_inputs = []
if is_training:
mean, variance = tf.nn.moments(image, [0, 1, 2])
update_moving_mean = moving_averages.assign_moving_average(
moving_mean, mean, self.decay)
update_moving_variance = moving_averages.assign_moving_average(
moving_variance, variance, self.decay)
control_inputs = [update_moving_mean, update_moving_variance]
else:
mean = moving_mean
variance = moving_variance
with tf.control_dependencies(control_inputs):
return tf.nn.batch_normalization(
image, mean=mean, variance=variance, offset=beta,
scale=None, variance_epsilon=0.001)
ऐसे 'tf.contrib के रूप में उच्च स्तरीय API से पूर्व निर्धारित परतों का उपयोग करने पर विचार करें .layers'। – danijar