मैंने TensorFlow में एक साधारण MLP लिखा है जो XOR-Gate मॉडलिंग कर रहा है ।
के लिए:
input_data = [[0., 0.], [0., 1.], [1., 0.], [1., 1.]]
यह निम्नलिखित उत्पादन करना चाहिए:
output_data = [[0.], [1.], [1.], [0.]]
नेटवर्क में एक इनपुट परत, एक छिपी हुई परत और 2, 5 और 1 न्यूरॉन्स के साथ एक आउटपुट परत है।
वर्तमान में मेरे पास निम्नलिखित क्रॉस एंट्रोपी है:
cross_entropy = -(n_output * tf.log(output) + (1 - n_output) * tf.log(1 - output))
मैंने इस सरल विकल्प को भी आज़माया है:
cross_entropy = tf.square(n_output - output)
कुछ अन्य प्रयासों के साथ।
हालांकि, कोई बात नहीं क्या मेरी सेटअप था, एक साथ त्रुटि GradientDescentOptimizer
को कम किया गया था बहुत धीमी एक से AdamOptimizer
।
वास्तव में tf.train.AdamOptimizer(0.01)
400-800 सीखने चरणों के बाद वास्तव में अच्छा परिणाम का उत्पादन (सीखने दर, जहां की निर्भरता में 0.01
, जबकि सबसे अच्छा परिणाम था) tf.train.GradientDescentOptimizer
हमेशा 2000 सीखने से अधिक की जरूरत है कोई बात नहीं क्या पार एन्ट्रापी गणना या सीखने दर इस्तेमाल किया गया था कदम दूर है।
ऐसा क्यों है? ऐसा लगता है AdamOptimizer
कि हमेशा एक बेहतर विकल्प है ?!