TensorFlow मेसिन-लर्निङ मोडेलहरू सिर्जना गर्न बहुमुखी उपकरण हो।
यस पोष्टमा, हामी TensorFlow, एक ओपन-सोर्स मेसिन लर्निङ फ्रेमवर्कको साथ अनुहार पहिचान प्रणाली कसरी सिर्जना गर्ने भनेर हेर्नेछौं। हामी एक सफल अनुहार पहिचान प्रणाली सिर्जना गर्न आवश्यक प्रक्रियाहरूमा जान्छौं, डेटा सङ्कलन र तयारीदेखि प्रशिक्षण र मोडेलको मूल्याङ्कन गर्न।
तपाईंले कोड स्निपेटहरू र वास्तविक-विश्व उदाहरणहरूको सहायताले अनुहार पहिचान सिर्जना गर्न TensorFlow सँग पहिलो हातको अनुभव प्राप्त गर्नुहुनेछ। हामी अगाडि बढ्दा तपाईंलाई पछ्याउन स्वागत छ।
टेन्सरफ्लोको परिचय
TensorFlow एउटा नि:शुल्क र खुला स्रोत पुस्तकालय हो। यो एक सांकेतिक गणित टूलबक्स हो जसले डेटाफ्लो र भिन्नता प्रोग्रामिंग प्रयोग गर्दछ। तपाईं यसको साथ गहिरो सहित कार्यहरूको दायरा ह्यान्डल गर्न सक्नुहुन्छ तंत्रिका सञ्जाल प्रशिक्षण।
TensorFlow शक्तिशाली र अनुकूलनीय छ। त्यस्तै गरी, यो विकास र को लागी एक महान उपकरण हो मेसिन लर्निङ मोडेलहरू प्रयोग गर्दै। तपाईं धेरै तहहरू र टेन्सर अपरेसनहरूसँग जटिल मोडेलहरू निर्माण गर्न सक्नुहुन्छ। साथै, पुस्तकालयमा पूर्व-निर्मित मोडेलहरू विशेष आवश्यकताहरूको लागि राम्रो-ट्यून गर्न सकिन्छ।
यसबाहेक, TensorFlow को एक विशाल र विस्तारित प्रयोगकर्ता समुदाय छ। त्यसोभए, प्लेटफर्ममा नयाँ भएका व्यक्तिहरूको लागि जानकारी र मद्दतको प्रशस्तता छ।
TensorFlow को लागि लोकप्रिय छ मेशिन सिकाइ आंशिक रूपमा किनभने यसले अन्त-देखि-अन्त कार्यप्रवाह प्रदान गर्दछ। त्यसोभए, तपाईं सजिलैसँग मोडेलहरू निर्माण, तालिम र प्रयोग गर्न सक्नुहुन्छ। यसले विशिष्ट मागहरू फिट गर्न मोडेलहरू सुधार गर्न र मापन गर्नका लागि उपकरणहरू र रणनीतिहरू प्रदान गर्दछ। यो डेटा पूर्व-प्रशोधन देखि मोडेल तैनाती सम्म भिन्न हुन्छ।
अनुहार पहिचान भनेको के हो?
अनुहार पहिचान भनेको ए कम्प्युटर दृष्टि अनुहारको आधारमा व्यक्तिको पहिचान पहिचान गर्ने कार्य। यो प्रविधिले आँखा, नाक र मुखको आकार र बनावट जस्ता अनुहारका विशेषताहरू पहिचान गर्छ।
र, यसले तिनीहरूलाई मिल्दो पहिचान गर्न ज्ञात अनुहारहरूको डेटाबेससँग तुलना गर्दछ। अनुहार पहिचानमा सुरक्षा प्रणाली, फोटो संगठन, र बायोमेट्रिक प्रमाणीकरण सहित धेरै प्रयोगहरू छन्।
फेस रिकग्निसन एल्गोरिदमको शुद्धता हालैका वर्षहरूमा मेसिन लर्निङमा भएका सफलताहरूको परिणाम स्वरूप बढेको छ।
आवश्यक पुस्तकालयहरू आयात गर्दै
कुनै पनि कुरा सुरु गर्नु अघि, हामीले हाम्रो मोडेलको लागि आवश्यक पुस्तकालयहरू आयात गर्न आवश्यक छ। Tensorflow (tf) आयात गरिएको छ र मोडेल सिर्जना गर्न र प्रशिक्षित गर्न प्रयोग गरिन्छ। <(p>
"numpy" ले गणितीय गणना र डेटा प्रशोधन गर्छ।
"matplotlib.pyplot" plt को रूपमा आयात गरिन्छ र यसको लागि प्रयोग गरिन्छ डाटा चार्टिङ र दृश्यीकरण.
अन्तमा, "ftch lfw people" sklearn बाट आयात गरिएको छ। डेटासेटहरू र अनुहार पहिचान डेटासेट लोड गर्न प्रयोग गरिन्छ। यो प्रकार्य स्किट-लर्न टुलकिटको अंश हो। यस प्रकार्यको लागि धन्यवाद हामीले अर्को डेटासेट अपलोड गर्नु परेन। यो पहिले नै स्किट-लर्नमा निर्मित छ।
र, यसले तपाईंलाई विस्तृत दायरामा पहुँच दिन्छ मेसिन लर्निङका लागि डाटासेटहरू अनुप्रयोगहरू। यस परिदृश्यमा, हामी "जंगलीमा लेबल गरिएको अनुहार" (LFW) डेटासेट पुन: प्राप्त गर्न फेच lfw People विधि प्रयोग गर्छौं। यसमा मानिसहरूको अनुहारका तस्बिरहरू साथै तिनीहरूसँग जाने लेबलहरू समावेश हुन्छन्।
यी पुस्तकालयहरू हाम्रो अनुहार पहिचान मोडेलको कार्यान्वयन र मूल्याङ्कनमा महत्वपूर्ण छन्।
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt from sklearn.datasets
import fetch_lfw_people
अनुहार पहिचान डेटासेट पूर्व-प्रशोधन र लोड गर्दै
यस भागमा, हामी अनुहार पहिचान डेटा पूर्वप्रक्रिया गर्न "ftch lfw People" प्रकार्य प्रयोग गर्छौं। पहिले, हामी "min faces per person=60" विकल्पको साथ lfw people लाई फेच गर्छौं। यसले संकेत गर्छ कि हामी डेटासेटमा कम्तीमा ६० तस्बिरहरू भएका व्यक्तिहरूलाई मात्र समावेश गर्न चाहन्छौं। तसर्थ, हामी सुनिश्चित गर्छौं कि हाम्रो मोडेलमा सिक्नको लागि पर्याप्त डेटा छ। साथै, यसले ओभरफिटिंगको खतरा कम गर्छ।
फेस वस्तुबाट डाटा र लेबलहरू निकालिन्छन् र X र y चरहरूलाई तोकिन्छ। एक्स होल।
हामी अब पूर्वप्रक्रिया गरिएको डाटा र लेबलहरू प्रयोग गरेर हाम्रो अनुहार पहिचान मोडेललाई तालिम दिन तयार छौं।
faces = fetch_lfw_people(min_faces_per_person=60)
X = faces.data
y = faces.target
target_names = faces.target_names
विभाजन प्रशिक्षण र परीक्षण सेट
यस चरणमा, हामीले हाम्रो अनुहार पहिचान डेटासेटलाई sklearn.model चयनबाट रेल परीक्षण विभाजन विधि प्रयोग गरी दुई भागमा विभाजन गर्यौं। यस विभाजनको लक्ष्य प्रशिक्षण पछि हाम्रो मोडेलको कार्यसम्पादन मूल्याङ्कन गर्नु हो
ट्रेन परीक्षण विभाजन प्रकार्य इनपुट डेटा X र लेबल y को रूपमा स्वीकार गर्दछ। र, यसले तिनीहरूलाई प्रशिक्षण र परीक्षण सेटहरूमा विभाजन गर्दछ। हामी यस उदाहरणमा परीक्षण आकार = 0.2 चयन गर्छौं। यसले 20% डाटा परीक्षण सेटको रूपमा र 80% प्रशिक्षण सेटको रूपमा प्रयोग गरिनेछ भन्ने संकेत गर्दछ। यसबाहेक, हामी प्रत्येक पटक कोड प्रदर्शन गर्दा डेटा लगातार विभाजित छ भनेर सुनिश्चित गर्न random state=42 प्रयोग गर्छौं।
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
डाटा तयारी गर्दै
प्रि-प्रोसेसिङ डाटाको उद्देश्य मोडेलमा प्रविष्टिको लागि तयार गर्नु हो। प्रत्येक डेटा बिन्दुलाई 255 द्वारा विभाजित गरेर यस कोडमा डाटा पूर्वप्रक्रिया गरिएको छ।
यो हासिल गर्न हामीलाई केले उत्प्रेरित गर्यो? नर्मलाइजेशन एक प्रिप्रोसेसिङ प्रक्रिया हो जुन मेशिन लर्निङमा प्रयोग गरिन्छ कि सबै सुविधाहरू समान स्केलमा छन् भनेर ग्यारेन्टी गर्न। यस परिदृश्यमा, 255 द्वारा विभाजन गर्दा 0 देखि 1 को दायरामा डेटा स्केल हुन्छ, जुन सामान्य तस्विर डेटा सामान्यीकरण चरण हो।
यसले मोडेलको अभिसरणलाई गति दिन्छ र यसको प्रदर्शन बढाउन सक्छ।
X_train = X_train / 255.0
X_test = X_test / 255.0
मोड सिर्जना गर्दै
हामी व्यक्तिको पहिचान गर्न चाहन्छौं जसको अनुहार चित्रमा देखिन्छ। यस अवस्थामा, हामी पूर्ण रूपमा जडान भएको सञ्जाल प्रयोग गर्नेछौं, जसलाई प्रायः घना नेटवर्क भनिन्छ। यो एक कृत्रिम न्यूरल नेटवर्क हो जुन मोडेल सिर्जना गर्न प्रयोग गरिएको थियो।
कृत्रिम तंत्रिका सञ्जालहरू मानव मस्तिष्कले कसरी काम गर्छ र व्यवस्थित हुन्छ भनेर मोडेल गरिएको छ। तिनीहरू सूचना-प्रशोधन नोडहरू वा न्यूरन्सहरू मिलेर बनेका छन् जुन लिङ्क गरिएको छ। घना सञ्जालमा एक तहमा प्रत्येक न्यूरोन यसको माथिको तहमा प्रत्येक न्यूरोनसँग जोडिएको हुन्छ।
यस कोडमा मोडेलमा चार तहहरू छन्। अर्को तहमा फिड गर्नको लागि, इनपुट डेटालाई पहिलो तहमा एक-आयामी एरेमा समतल गरिएको छ। तदनुसार, निम्न दुई तहहरूमा 128 र 64 न्यूरोन्सहरू पूर्ण रूपमा जोडिएका छन्।
ReLU सक्रियता प्रकार्य यी तहहरू द्वारा प्रयोग गरिएको एक अद्वितीय सक्रियता प्रकार्य हो। त्यसको साथ, हामी इनपुट र आउटपुटहरू बीचको गैर-रैखिक सहसंबंध सिक्न मोडेल प्राप्त गर्न सक्छौं। अन्तिम तहले भविष्यवाणी गर्न सफ्टम्याक्स सक्रियता प्रकार्य प्रयोग गर्दछ। र, यो सम्भावित वर्गहरू भएका जति धेरै न्यूरोन्सहरूसँग पूर्ण रूपमा जोडिएको तह हो।
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(62 * 47,)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(len(target_names), activation='softmax')
])
मोडेलको संकलन
मोडेल "कम्पाइल" प्रकार्य प्रयोग गरेर कम्पाइल गरिएको छ। हामीले प्रशिक्षणको लागि मोडेल तयार गर्न आवश्यक छ। त्यसोभए, हामी मोडेलको मूल्याङ्कन गर्न प्रयोग गरिने अनुकूलक, हानि प्रकार्य, र मेट्रिक्स परिभाषित गर्नेछौं।
प्रशिक्षणको क्रममा, अनुकूलक मोडेलको प्यारामिटरहरू परिवर्तन गर्ने जिम्मेवारीमा छ। "एडम" अप्टिमाइजर एक लोकप्रिय गहिरो-शिक्षा अनुकूलन प्रविधि हो।
हामीले तालिम डेटामा मोडेलको कार्यसम्पादन मूल्याङ्कन गर्न हानि प्रकार्य प्रयोग गर्छौं। किनभने लक्ष्य लेबलहरू एक-हट इन्कोड गरिएको भेक्टरहरू भन्दा छविको वर्गलाई प्रतिबिम्बित गर्ने पूर्णांकहरू हुन्, "स्पर्श वर्गीय क्रसेन्ट्रोपी" हानि प्रकार्य अनुकूल छ।
अन्तमा, हामी मोडेलको मूल्याङ्कन गर्न मेट्रिक्स परिभाषित गर्छौं, यस अवस्थामा, "शुद्धता"।
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
मोडल तालिम
हामी मोडेललाई तालिम दिन "फिट" प्रकार्य प्रयोग गर्नेछौं।
हामी प्रशिक्षण डेटा (X ट्रेन) र सम्बन्धित लेबलहरू (y ट्रेन) प्रदान गर्नेछौं, साथै 10 को रूपमा चलाउनका लागि युगहरू (पुनरावृत्तिहरू) को संख्या सेट गर्नेछौं। प्रशिक्षण प्रक्रियाले घाटा कम गर्न मोडेल वजनहरू परिमार्जन गर्दछ (बिचको भिन्नता। भविष्यवाणी गरिएको र वास्तविक लेबलहरू) र प्रशिक्षण डेटाको शुद्धता सुधार गर्नुहोस्।
model.fit(X_train, y_train, epochs=10)
मोडेल मूल्याङ्कन
अब, हामीले परीक्षण डेटामा प्रशिक्षित मोडेलको मूल्याङ्कन गर्न आवश्यक छ। हामी परीक्षण हानि प्रयोग गर्छौं र परीक्षण शुद्धता मोडेलको प्रदर्शन मूल्याङ्कन गर्न प्रयोग गरिन्छ। परीक्षण डेटा X परीक्षण र परीक्षण लेबल y परीक्षणमा, हामीले "model.evaluate प्रकार्य" लाई कल गर्न आवश्यक छ।
प्रकार्यले परीक्षण शुद्धता र परीक्षण हानि आउटपुट गर्दछ। चर परीक्षण हानि र परीक्षण शुद्धता, क्रमशः, यी मानहरू समावेश गर्दछ। अन्तमा, हामी परीक्षण शुद्धता आउटपुट गर्न "प्रिन्ट" प्रकार्य प्रयोग गर्दछौं।
test_loss, test_accuracy = model.evaluate(X_test, y_test)
print("Test accuracy:", test_accuracy)
कक्षाहरू भविष्यवाणी गर्दै र भविष्यवाणी गरिएका कक्षाहरू प्राप्त गर्दै
प्रशिक्षण मोडेल र परीक्षण डेटा प्रयोग गरेर, एल्गोरिथ्म भविष्यवाणी गर्छ। जब परीक्षण डेटा "model.predict" विधिमा पास गरिन्छ, यसले परीक्षण सेटमा प्रत्येक तस्विरको लागि भविष्यवाणीहरूको एर्रे आउटपुट गर्दछ।
प्रत्येक तस्बिरको लागि लक्षित वर्ग नाम त्यसपछि "np.argmax" प्रकार्य प्रयोग गरेर "लक्ष्य नामहरू" सूचीबाट प्राप्त गरिन्छ। यो अनुक्रमणिका त्यसपछि प्रत्येक छविको लागि भविष्यवाणी गरिएको वर्ग निर्धारण गर्न प्रयोग गरिन्छ।
सूची बुझाइ प्रयोग गरेर, "पूर्वानुमानहरू" एरेमा भएका सबै भविष्यवाणीहरू यस विधिको अधीनमा छन्, जसको परिणामस्वरूप "पूर्वानुमानित वर्गहरू" सूची बनाइन्छ।
predictions = model.predict(X_test)
predicted_classes = [target_names[np.argmax(prediction)] for prediction in predictions]
भविष्यवाणीहरू कल्पना गर्दै
अब हामी हाम्रो मोडेल कस्तो देखिन्छ भनेर हेर्न सक्छौं।
मोडेलले कत्तिको राम्रो गरिरहेको छ भनेर मूल्याङ्कन गर्न, पहिलो 10 तस्बिरहरू र तिनीहरूको भविष्यवाणी देखाइनेछ। यसले तस्बिरहरूलाई ग्रेस्केलमा प्लट गर्नेछ र matplotlib.pyplot मोड्युल प्रयोग गरेर छविको वास्तविक वर्ग र मोडेलले भविष्यवाणी गरेको वर्ग दुवै प्रदर्शन गर्नेछ।
"imshow" प्रकार्य पहिलो 10 परीक्षण सेट तस्बिरहरू प्रत्येक प्लट गर्न लूप द्वारा प्रयोग गरिन्छ। लक्षित नामहरू [y परीक्षण[i]] र भविष्यवाणी गरिएका वर्गहरू [i] क्रमशः छविको वास्तविक वर्ग र भविष्यवाणी गरिएको वर्ग निर्धारण गर्न प्रयोग गरिन्छ। प्रत्येक प्लटको शीर्षकहरू त्यसपछि यी वर्गीकरणहरूद्वारा सङ्केत गरिन्छ।
अन्तमा, plt.show() विधि प्रयोग गरेर प्लट प्रदर्शित हुन्छ।
for i in range(10):
plt.imshow(X_test[i].reshape(62, 47), cmap='gray')
plt.title(f"True: {target_names[y_test[i]]}, Predicted:{predicted_classes[i]}")
plt.show()
लिपि गर्नुहोस्
TensorFlow ले मेसिन लर्निङ मोडेलहरू सिर्जना गर्नको लागि पूर्ण र लचिलो वातावरण प्रदान गर्दछ।
विशेष आवश्यकताहरू पूरा गर्न मोडेललाई फाइन-ट्युनिङ गरेर वा मेसिन लर्निङमा नयाँ विकासहरू थपेर, मोडेलको शुद्धता अझ बढाउन सकिन्छ।
TensorFlow र अनुहार पहिचान भविष्यमा सुरक्षा प्रणाली, बायोमेट्रिक प्रमाणीकरण, र स्वास्थ्य सेवा जस्ता उद्योगहरूमा बढ्दो रूपमा प्रयोग हुने सम्भावना छ। हामी चाँडै आकर्षक आविष्कारहरू देख्नेछौं।
जवाफ छाड्नुस्