2016-05-02 29 views
5

मैंने देखा कि पहले से ही tensorflow के लिए एपीआई में बैच सामान्यीकरण कार्य हैं। एक बात जो मुझे समझ में नहीं आती है, यह है कि प्रशिक्षण और परीक्षण के बीच प्रक्रिया को कैसे बदला जाए?tensorflow में बैच सामान्यीकरण

प्रशिक्षण के दौरान परीक्षण के दौरान बैच सामान्यीकरण अलग-अलग कार्य करता है। विशेष रूप से प्रशिक्षण के दौरान एक निश्चित माध्य और भिन्नता का उपयोग करता है।

क्या वहां कुछ अच्छा उदाहरण कोड है? मैंने कुछ देखा, लेकिन स्कोप चर के साथ यह भ्रमित हो गया

+0

ऐसे 'tf.contrib के रूप में उच्च स्तरीय API से पूर्व निर्धारित परतों का उपयोग करने पर विचार करें .layers'। – danijar

उत्तर

9

आप सही हैं, 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) 
+0

बहुत बहुत धन्यवाद। एक और त्वरित सवाल। गामा के साथ एक संस्करण वास्तव में अधिक जटिल है? ऐसा लगता है कि आपको बस एक और टीएफ शुरू करना होगा। इसके लिए उपलब्ध है? शेष कोड एक जैसा होना चाहिए, है ना? – user3358117

+0

हां, आप 'गामा' जोड़ने के लिए प्रदान किए गए लिंक में अधिक सामान्य कार्यान्वयन का पालन कर सकते हैं। – keveman

संबंधित मुद्दे