में परिचय मैं बस बदल गया है
loss = tf.reduce_mean(tf.square(y - y_data))
सेवा
loss = tf.reduce_mean(tf.abs(y - y_data))
और मॉडल समय के साथ बड़ा हो गया नुकसान जानने में असमर्थ है। क्यों?
में परिचय मैं बस बदल गया है
loss = tf.reduce_mean(tf.square(y - y_data))
सेवा
loss = tf.reduce_mean(tf.abs(y - y_data))
और मॉडल समय के साथ बड़ा हो गया नुकसान जानने में असमर्थ है। क्यों?
जवाबों:
मैंने यह कोशिश की और वही परिणाम मिला।
इसका कारण यह है कि .abs
एक साधारण ऑप्टिमाइज़र के लिए ग्रैडिएंट का मिनिमम का पालन करना कठिन होता है, स्क्वेर डिफरेंस के विपरीत, जहाँ ग्रैडिएंट धीरे-धीरे शून्य तक पहुँचता है, पूर्ण अंतर के ग्रैडिएंट में एक निश्चित परिमाण होता है, जो अचानक उलट जाता है, जो आस-पास के ऑप्टिमाइज़र को दोलन करता है। न्यूनतम बिंदु। बेसिक ग्रेडिएंट डिसेंट्रिएंट ग्रेडिएंट के परिमाण के प्रति, और सीखने की दर के प्रति बहुत संवेदनशील है, जो अनिवार्य रूप से स्टेप साइज के लिए ग्रेडिएंट का गुणक है।
सबसे सरल फिक्स लर्निंग रेट को कम करना है जैसे परिवर्तन लाइन
optimizer = tf.train.GradientDescentOptimizer(0.5)
सेवा
optimizer = tf.train.GradientDescentOptimizer(0.05)
इसके अलावा, विभिन्न ऑप्टिमाइज़र के साथ एक नाटक करें। कुछ .abs
बेहतर-हानि के साथ सामना करने में सक्षम होंगे ।