2017-01-17 11 views
9

से संबंधित प्रश्न मैं एक multilayer_perceptron मॉडल का निर्माण, TensorFlow सीख रहा हूँ। मैं कम से एक की तरह कुछ उदाहरण में देख रहा हूँ: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/3_NeuralNetworks/multilayer_perceptron.ipynbटेंसरफ्लो: tf.argmax() और tf.equal()

मैं तो नीचे दिए गए कोड में कुछ सवाल हैं:

def multilayer_perceptron(x, weights, biases): 
    : 
    : 

pred = multilayer_perceptron(x, weights, biases) 
    : 
    : 

with tf.Session() as sess: 
    sess.run(init) 
     : 
    correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1)) 

    accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) 
    print ("Accuracy:", accuracy.eval({x: X_test, y: y_test_onehot})) 

मैं सोच रहा हूँ क्या tf.argmax(prod,1) और tf.argmax(y,1) मतलब और वापसी (प्रकार और मूल्य) है वास्तव में ? और वास्तविक मूल्यों के बजाय correct_prediction एक चर है?

अंत में, हम y_test_prediction सरणी (टीएफ सत्र से इनपुट डेटा X_test) का पूर्वानुमान परिणाम कैसे प्राप्त करते हैं? आपका बहुत बहुत धन्यवाद!

उत्तर

0

tf.argmax (इनपुट, अक्ष = कोई नहीं, नाम = कोई नहीं, आयाम = कोई नहीं)

एक टेन्सर की धुरी भर में सबसे बड़ा मान के साथ सूचकांक देता है।

विशिष्ट में मामले के लिए, यह तर्क के रूप में pred प्राप्त करता है के लिए यह input और 1axis के रूप में है। अक्ष वर्णन करता है कि इनपुट टेंसर की धुरी को कम करने के लिए कौन सी धुरी। वैक्टरों के लिए, अक्ष = 0.

उदाहरण: सूची [2.11,1.0021,3.99,4.32] पर दिया गया तर्क 3 लौटाएगा जो उच्चतम मूल्य का सूचकांक है।


correct_prediction एक टेन्सर कि बाद में मूल्यांकन किया जाएगा है। यह नियमित पायथन चर नहीं है। इसमें बाद में मूल्य की गणना करने के लिए आवश्यक जानकारी शामिल है। इस विशिष्ट मामले के लिए, यह एक और टेंसर accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float")) का हिस्सा होगा और द्वारा accuracy.eval({x: X_test, y: y_test_onehot}) पर मूल्यांकन किया जाएगा।


y_test_prediction अपने correct_prediction टेन्सर होना चाहिए।

+0

कारण है कि यह 'वापस आ जाएगी 3' का मूल्यांकन? जहां सबसे बड़ा मूल्य 4.32 है? –

+0

@ अयोध्यांकितपॉल 4.32 की सूचकांक, उच्चतम मूल्य, 3. है। यह 0 (2.11) – BernardoGO

+0

से शुरू होता है, यह मान के बजाय सूचकांक लौटाता है। –

16
tf.argmax(input, axis=None, name=None, dimension=None) 

सूचकांक को टेंसर के धुरी के सबसे बड़े मूल्य के साथ देता है।

इनपुट एक टेंसर और अक्ष है जो इनपुट टेंसर के धुरी को कम करने के लिए वर्णित करता है। वैक्टर के लिए, उपयोग अक्ष = 0.

अपने विशिष्ट मामले के लिए के दो सरणियों का उपयोग करें और प्रदर्शित इस

pred = np.array([[31, 23, 4, 24, 27, 34], 
       [18, 3, 25, 0, 6, 35], 
       [28, 14, 33, 22, 20, 8], 
       [13, 30, 21, 19, 7, 9], 
       [16, 1, 26, 32, 2, 29], 
       [17, 12, 5, 11, 10, 15]]) 

y = np.array([[31, 23, 4, 24, 27, 34], 
       [18, 3, 25, 0, 6, 35], 
       [28, 14, 33, 22, 20, 8], 
       [13, 30, 21, 19, 7, 9], 
       [16, 1, 26, 32, 2, 29], 
       [17, 12, 5, 11, 10, 15]]) 

का मूल्यांकन tf.argmax(pred, 1) एक टेन्सर जिसका मूल्यांकन दे देंगे array([5, 5, 2, 1, 3, 0])

का मूल्यांकन tf.argmax(y, 1) एक टेन्सर जिसका देता है देता है चलो मूल्यांकन array([5, 5, 2, 1, 3, 0])

tf.equal(x, y, name=None) takes two tensors(x and y) as inputs and returns the truth value of (x == y) element-wise. 

हमारे बाद उदाहरण, tf.equal(tf.argmax(pred, 1),tf.argmax(y, 1)) एक टेंसर देता है जिसका मूल्यांकन array(1,1,1,1,1,1) देगा।

correct_prediction एक टेन्सर जिसका मूल्यांकन 0 के एक 1-डी सरणी और दे देंगे 1 के

y_test_prediction pred = tf.argmax(logits, 1)

tf.argmax के लिए दस्तावेज और tf.equal द्वारा पहुँचा जा सकता क्रियान्वित करते हुए प्राप्त किया जा सकता नीचे दिए गए लिंक का पालन करें।

tf.argmax() https://www.tensorflow.org/api_docs/python/math_ops/sequence_comparison_and_indexing#argmax

tf.equal() https://www.tensorflow.org/versions/master/api_docs/python/control_flow_ops/comparison_operators#equal

+0

क्या कोड '''' उस कोड में' pred' है? मेरा मतलब है कि लॉग एक मॉडल का परिणाम है, उदाहरण के लिए 'out = tf.matmul (fully_conn_layer, _weights [' out ']) + _biases [' out ']' (मेरे पास सीएनएन एलेक्सनेट मॉडल लागू है)? तो मुझे समझ में नहीं आता कि आप 'pred = tf.argmax (लॉग इन, 1) कैसे प्राप्त करते हैं – Kyrol

5

प्रलेखन पढ़ना:

tf.argmax

एक की अक्षों के अनुसार सबसे बड़ा मूल्य के साथ सूचकांक रिटर्न टेन्सर।

tf.equal

(एक्स == वाई) तत्व के लिहाज से की सच्चाई मान देता है।

tf.cast

एक नए प्रकार के लिए एक टेन्सर डाले।

tf.reduce_mean

एक टेन्सर के आयामों के बीच तत्वों का मतलब गणना करता है।


अब आप आसानी से समझा सकता है कि वह क्या करता। आपका y एक-गर्म एन्कोडेड है, इसलिए इसमें एक 1 है और अन्य सभी शून्य हैं। आपके pred कक्षाओं की संभावनाओं का प्रतिनिधित्व करता है। तो Argmax सर्वोत्तम भविष्यवाणी और सही मूल्य की स्थिति पाता है। उसके बाद आप जांचते हैं कि वे वही हैं या नहीं।

तो अब आपके correct_prediction सही/गलत मूल्यों का एक वेक्टर है जो कि उदाहरणों की संख्या के बराबर आकार के बराबर है। आप इसे फ्लोट में परिवर्तित करते हैं और औसत लेते हैं।


असल में इस हिस्से अच्छी तरह से में TF tutorial से समझाया गया है मॉडल हिस्सा

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