पायथन में न्यूरल नेटवर्क आर्किटेक्चर की कल्पना कैसे करें

Jupyter या Google Colab का उपयोग करके अपने तंत्रिका नेटवर्क का आरेखीय प्रतिनिधित्व बनाने के लिए एक त्वरित मार्गदर्शिका

छवि क्रेडिट - लेखक द्वारा विज़ुअलकेरस और ज्यूपिटर नोटबुक का उपयोग करके विकसित किया गया।

अक्सर कृत्रिम तंत्रिका नेटवर्क या कन्वोल्यूशन न्यूरल नेटवर्क या आवर्ती तंत्रिका नेटवर्क जैसी अन्य विविधताओं के साथ काम करते समय, हम अपने संकलित मॉडल की कल्पना करना और एक आरेखीय प्रतिनिधित्व बनाना चाहते हैं। इससे दो उद्देश्य हल हो सकते हैं:

  1. कई मॉडलों को परिभाषित और प्रशिक्षित करते समय हमें अपने मॉडल की गहराई की कल्पना करने और विभिन्न परतों की तुलना करने और उन्हें क्रमिक रूप से कैसे रखा जाता है, इसकी अनुमति मिलती है।
  2. मॉडल संरचना, प्रत्येक परत में उपयोग किए जाने वाले सक्रियण कार्यों, प्रत्येक परत के आकार (न्यूरॉन्स की संख्या), और उन मापदंडों की बेहतर समझ की अनुमति देता है जिन्हें प्रशिक्षित करने की आवश्यकता है

पायथन में कुछ पैकेज आसानी से उपलब्ध हैं जो हमारे न्यूरल नेटवर्क मॉडल का एक दृश्य प्रतिनिधित्व बना सकते हैं। किसी मॉडल को प्रशिक्षित करने से पहले भी पहले तीन पैकेजों का उपयोग किया जा सकता है (मॉडल को केवल परिभाषित और संकलित करने की आवश्यकता है); हालाँकि, टेंसर बोर्ड को आर्किटेक्चर की कल्पना करने से पहले उपयोगकर्ता को सटीक डेटा पर मॉडल को प्रशिक्षित करने की आवश्यकता होती है।

  1. एएनएन विज़ुअलाइज़र
  2. दृश्य केरस
  3. केरस मॉडल प्लॉट
  4. टेंसर बोर्ड
पिप विजुअलकेरस स्थापित करेंपिप इंस्टॉल ann_visualizerपिप इंस्टाल ग्राफ़विज़

हमें "टेंसर बोर्ड" और "केरस मॉडल प्लॉट" को अलग से स्थापित करने की आवश्यकता नहीं है। यह Tensorflow और Keras की प्रारंभिक स्थापना के साथ आएगा।

हम नीचे सूचीबद्ध पुस्तकालयों में से केवल कुछ का ही उपयोग कर सकते हैं। अधिकांश लाइब्रेरी डेटा पर स्पष्ट रूप से प्रशिक्षण दिए बिना TensorFlow मॉडल को आरेख में परिवर्तित कर सकती हैं। आप इसे सत्य का एकल स्रोत मान सकते हैं। पांडा, स्किमेज और ओपनसीवी जैसी कुछ लाइब्रेरी संरचित डेटा या छवियों को पढ़ते समय काम आएंगी।

# आवश्यक पुस्तकालय आयात करेंपीडी के रूप में आयात पांडाएनपी के रूप में numpy आयात करें # numpy आयात करेंस्किमेज आयात डेटा से, आईओ # स्किमेज लाइब्रेरी आयात करें (डेटा - परीक्षण छवियां और उदाहरण डेटा।# io - छवियों को पढ़ना, सहेजना और प्रदर्शित करना।)स्किमेज.कलर से आरजीबी2ग्रे आयात करेंmatplotlib.pyplot को plt के रूप में आयात करें # matplotlib.pyplot आयात करें (पायथन में प्लॉटिंग फ्रेमवर्क।)%matplotlib इनलाइनआयात ओएस # यह मॉड्यूल ऑपरेटिंग सिस्टम पर निर्भर कार्यक्षमता का उपयोग करने का एक पोर्टेबल तरीका प्रदान करता है।ओएस.पर्यावरण['TF_CPP_MIN_LOG_LEVEL'] = '3'आयात चेतावनी# चेतावनियों को दबानाचेतावनियाँ.फ़िल्टरचेतावनी('अनदेखा करें')IPython.display से डिस्प्ले आयात करेंcv2 को cv . के रूप में आयात करें
sklearn.metrics से कन्फ्यूजन_मैट्रिक्स आयात करें
sklearn.model_selection import train_test_split सेTensorflow.keras से उपयोगिताएँ आयात करेंTensorflow.keras.models से अनुक्रमिक, लोड_मॉडल आयात करेंTensorflow.keras.layers से Dense, ड्रॉपआउट, फ़्लैटन, Conv2D, MaxPool2D, बैचनॉर्मलाइज़ेशन आयात करेंtensorflow.keras.optimizers से एडम आयात करेंtf के रूप में आयात स्पर्शरेखाएसओ के रूप में समुद्री खाने का आयात करें

शुरुआत से ही एएनएन और सीएनएन के बारे में अधिक सामग्री खोजने के लिए कुछ उपयोगी लिंक।

हम अलग-अलग हाइपरपैरामीटर के साथ तीन अलग-अलग सीएनएन मॉडल को परिभाषित करेंगे। आदर्श रूप से, वास्तविक दुनिया में, हमारा लक्ष्य सटीकता या किसी भी प्रासंगिक मैट्रिक्स को अधिकतम करने के लिए विभिन्न आर्किटेक्चर को लागू करना है, यह देखते हुए कि हम एक बहु-श्रेणी वर्गीकरण कार्य के लिए मॉडल का निर्माण कर रहे हैं। समस्या प्रकार की हमारी पसंद का विज़ुअलाइज़ेशन पैकेजों का उपयोग करने के तरीके पर कोई प्रभाव नहीं पड़ेगा।

हमने अलग-अलग संख्या में सीएनएन परतों, अधिकतम-पूलिंग और सघन परतों के साथ तीन अलग-अलग मॉडल बनाने के लिए उपयोगकर्ता-परिभाषित फ़ंक्शन बनाए।

4.1 - आर्किटेक्चर 1 - उथली सीएनएन परतें + एएनएन परतें

डीईएफ़ निर्माण_मॉडल():मॉडल = अनुक्रमिक()model.add(Conv2D(फ़िल्टर=64, कर्नेल_साइज़=(3, 3), इनपुट_शेप=(128, 128, 1), सक्रियण='relu'))model.add(Conv2D(फ़िल्टर=64, कर्नेल_आकार=(3, 3), सक्रियण='relu'))model.add(MaxPool2D((2, 2)))model.add (चपटा ())model.add(Dense(256, सक्रियण='relu'))model.add(Dense(12, सक्रियण='सॉफ्टमैक्स'))मॉडल.संकलन(नुकसान='श्रेणीबद्ध_क्रॉसेंट्रॉपी', ऑप्टिमाइज़र='एडम', मेट्रिक्स=['सटीकता'])वापसी मॉडल

4.2 - आर्किटेक्चर 2 - गहरी सीएनएन + उथली एएनएन परतें

डीईएफ़ sconstruct_model():smodel = अनुक्रमिक()smodel.add(Conv2D(फ़िल्टर=64, कर्नेल_साइज़=(3, 3), इनपुट_शेप=(128, 128, 3), सक्रियण='relu'))smodel.add(Conv2D(फ़िल्टर=64, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(फ़िल्टर=128, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(Conv2D(फ़िल्टर=128, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(फ़िल्टर=128, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(Conv2D(फ़िल्टर=128, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(फ़्लैटन())smodel.add(Dense(256, सक्रियण='relu'))smodel.add(Dense(12, सक्रियण='सॉफ्टमैक्स'))#ऑप्टिमाइज़र = एडम(एलआर=0.001)smodel.compile(los='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])#मॉडल.सारांश()वापसी smodel

4.3 - आर्किटेक्चर 3 - गहरी सीएनएन और एएनएन परतें

def cconstruct_model(learningRate):smodel = अनुक्रमिक()smodel.add(Conv2D(फ़िल्टर=32, कर्नेल_साइज़=(3, 3), इनपुट_शेप=(128, 128, 1), सक्रियण='relu'))smodel.add(Conv2D(फ़िल्टर=32, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(फ़िल्टर=64, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(Conv2D(फ़िल्टर=64, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(Conv2D(फ़िल्टर=128, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(Conv2D(फ़िल्टर=128, कर्नेल_आकार=(3, 3), सक्रियण='relu'))smodel.add(MaxPool2D((2, 2)))smodel.add(फ़्लैटन())smodel.add(Dense(256, सक्रियण='relu'))smodel.add(Dense(256, सक्रियण='relu'))smodel.add(Dense(12, सक्रियण='सॉफ्टमैक्स'))अनुकूलक = एडम(एलआर=लर्निंगरेट)smodel.compile(नुकसान='श्रेणीबद्ध_क्रॉसेंट्रॉपी', अनुकूलक=अनुकूलक, मेट्रिक्स=['सटीकता'])smodel.सारांश()वापसी smodelमॉडल=cconstruct_model(0.001)

एएनएन विज़ुअलाइज़र नामक एक पायथन मॉड्यूल कोड की कुछ पंक्तियों के साथ एक कृत्रिम तंत्रिका नेटवर्क की कल्पना करना संभव बनाता है (घोरघिउ, 2022)। यह एक सुव्यवस्थित और आकर्षक तंत्रिका नेटवर्क ग्राफ बनाने के लिए केरस और पायथन के ग्राफविज़ मॉड्यूल का उपयोग करता है। आपके पास संपूर्ण डीप लर्निंग नेटवर्क या केवल कन्वेन्शनल न्यूरल नेटवर्क की कल्पना करने की सुविधा है, जिसे आपने डीप लर्निंग में प्रगति से प्रेरित होकर बनाया है (शाह, 2018)।

अपने तंत्रिका नेटवर्क का पीडीएफ प्रतिनिधित्व उत्पन्न करने के लिए नीचे दी गई संरचना का उपयोग करें। हालाँकि, उससे पहले, हमें उपरोक्त मॉडलों को संकलित करने की आवश्यकता है।

मॉडल=निर्माण_मॉडल()

ann_viz(मॉडल, दृश्य = सत्य, फ़ाइल नाम = "network.gv", शीर्षक = "MyNeural नेटवर्क")

  • नमूना - केरस से अनुक्रमिक मॉडल
  • देखना - ann_viz() को कॉल करने के बाद ग्राफ़ को विज़ुअलाइज़ करें
  • फ़ाइल का नाम - फ़ाइल का नाम
  • शीर्षक - ग्राफ़ को दर्शाने के लिए कोई विशिष्ट शीर्षक
ann_visualizer.visualize से ann_viz आयात करेंann_viz(मॉडल, दृश्य = सत्य, फ़ाइल नाम = "cconstruct_model", शीर्षक = "CNN - मॉडल 1 - सरल वास्तुकला")
चित्र 1: एएनएन विज़ुअलाइज़र का उपयोग करके बनाया गया कन्स्ट्रक्ट_मॉडल() का स्नैपशॉट। श्रेय - ज्यूपिटर नोटबुक का उपयोग करके लेखक द्वारा विकसित छवि। मूल आउटपुट यहां एक छवि के रूप में फिट होने के लिए बहुत बड़ा है, इसलिए यहां नीचे की परतों का एक स्नैप शॉट उपयोग किया गया है।

विज़ुअलकेरस नामक एक पायथन टूल केरस न्यूरल नेटवर्क डिज़ाइन (या तो अलग से या टेन्सरफ्लो के हिस्से के रूप में) को देखना आसान बनाता है। स्टाइलिंग की अधिकांश ज़रूरतें आसानी से पूरी की जा सकती हैं। लेयर्ड-स्टाइल आर्किटेक्चर विकसित करने से कन्वेन्शनल न्यूरल नेटवर्क (सीएनएन) को काफी फायदा होता है। सरल फ़ीड-फ़ॉरवर्ड नेटवर्क सहित अधिकांश मॉडल, ग्राफ़-शैली आर्किटेक्चर की पीढ़ी से बहुत लाभान्वित होते हैं, जिसे यह मॉड्यूल समर्थन करता है (गैवरिकोव, 2022)।

मॉडल1=construct_model()मॉडल2=sconstruct_model()मॉडल3=cconstruct_model(0.009)विज़ुअलकेरस आयात करेंपीआईएल से ImageFont आयात करेंVisualkeras.layered_view(model1, Legend=True)Visualkeras.layered_view(model2, Legend=True)Visualkeras.layered_view(model3, Legend=True)
चित्र 2. तीन अलग-अलग मॉडल आर्किटेक्चर का आरेखीय प्रतिनिधित्व दिखाता है। श्रेय - ज्यूपिटर नोटबुक का उपयोग करके लेखक द्वारा विकसित छवि।

RSI keras.utils.plot_model ग्राफ़विज़ और पाइडॉट पैकेज का उपयोग करके केरस के माध्यम से परिभाषित और संकलित मॉडल को प्लॉट करने के लिए इनबिल्ट फ़ंक्शंस प्रदान करता है। ग्राफिक रूप से यह ऊपर उपयोग किए गए पैकेजों की तुलना में कम सहज है, लेकिन यह अनुक्रमिक मॉडल (टीम, एनडी) की बुनियादी वास्तुकला को रेखांकित करता है।

tf.keras.utils.plot_model(मॉडल1,to_file='model.png',show_shapes=सच,show_dtype=गलत,show_layer_names=सत्य,रैंकदिर='टीबी',विस्तार_नेस्टेड=सत्य,डीपीआई=96,लेयर_रेंज=कोई नहीं,show_layer_activations=सत्य,)

विचार करने के लिए कुछ हाइपरपैरामीटर:

  1. आदर्श: केरस संकलित मॉडल या मॉडल ऑब्जेक्ट का एक उदाहरण
  2. दायर करना: छवि का फ़ाइल नाम
  3. दिखाएँ_आकार: तंत्रिका नेटवर्क में प्रत्येक परत का आयाम और आकार प्रदर्शित करें
  4. शो_लेयर_एक्टिवेशन: न्यूरॉन्स के भीतर उपयोग किए जाने वाले सक्रियण कार्यों को प्रदर्शित करें
चित्र 3. tf.keras.utils.plot_model() के आउटपुट को दर्शाता है। श्रेय - ज्यूपिटर नोटबुक का उपयोग करके लेखक द्वारा विकसित छवि।

TensorBoard एक डैशबोर्ड इंटरफ़ेस है जो उपयोगकर्ताओं को विभिन्न मॉडल रन में लॉग देखने की अनुमति देता है। लॉग विभिन्न युगों में सटीकता, रिकॉल, आरएमएसई, एमएपीई और एमएसई जैसे किसी भी मॉडल सत्यापन माप को ट्रैक करने से लेकर मॉडल की वास्तुकला का एक वैचारिक ग्राफ बनाने तक हो सकते हैं। यह कल्पना करने के लिए एक शक्तिशाली उपकरण है कि क्या इच्छित मॉडल अपेक्षित डिज़ाइन से मेल खाता है, जबकि एक ऑप-लेवल ग्राफ़ का उपयोग करके किसी मॉडल को कैसे बदला जा सकता है, इस पर अंतर्दृष्टि प्रदान करता है।

इस कार्यक्षमता का उपयोग करने के लिए हमें पहले TensorBoard को लोड करना होगा और फिर एक लॉग निर्देशिका बनाना होगा।

%load_ext टेंसरबोर्डआयात सेटेंसरफ़्लो आयात केरस से# केरस टेंसरबोर्ड कॉलबैक को परिभाषित करें।logdir='logs/fit/' + datetime.now().strftime('%Y%m%d-%H%M%S')टेंसरबोर्ड_कॉलबैक = keras.callbacks.TensorBoard(log_dir=logdir)

केरस टेन्सरबोर्ड कॉलबैक बनाएं और प्रशिक्षण से पहले लॉग निर्देशिका निर्दिष्ट करें। आप इस कॉलबैक को model.fit() पर आपूर्ति करके यह सुनिश्चित कर सकते हैं कि ग्राफ़ डेटा TensorBoard विज़ुअलाइज़ेशन के लिए लॉग किया गया है। एक बार जब आप टेंसरबोर्ड शुरू कर देते हैं, तो इसे लोड होने में कुछ मिनट लग सकते हैं।

मॉडल.फिट(X2_ट्रेन, Y2_ट्रेन,बैच_साइज = 64,युग=5,कॉलबैक=[टेन्सरबोर्ड_कॉलबैक])

नोट: X2_train और Y2_train प्रशिक्षण डेटासेट हैं जो उपरोक्त कोड में प्रतिबिंबित नहीं होते हैं। आप इसे अपने किसी भी प्रशिक्षण डेटा से बदल सकते हैं।

TensorBoard हमेशा डिफ़ॉल्ट रूप से ऑप-लेवल ग्राफ़ दिखाता है। ("डिफ़ॉल्ट" टैग बाईं ओर हाइलाइट किया गया है।) कोड की तुलना में ग्राफ़ उल्टा है क्योंकि डेटा नीचे से ऊपर की ओर प्रवाहित होता है। लेकिन जैसा कि आप देख सकते हैं, ग्राफ मोटे तौर पर केरस मॉडल के विवरण जैसा दिखता है, जिसमें अतिरिक्त किनारे अन्य गणना नोड्स (टेन्सरफ्लो, 2022) की ओर ले जाते हैं।

चित्र 4. टेंसरबोर्ड के आउटपुट को दर्शाता है। श्रेय - ज्यूपिटर नोटबुक का उपयोग करके लेखक द्वारा विकसित छवि।

TensorBoard का उपयोग कैसे करें के बारे में अधिक संदर्भ संदर्भ के अंतर्गत पाया जा सकता है।

व्यावसायिक दृष्टिकोण से, जहां एक उपयोगकर्ता को हितधारकों के एक समूह के सामने अपना विश्लेषण प्रस्तुत करना होता है, ये चित्र चर्चा में और अधिक जटिलता जोड़ते हैं। हो सकता है कि वे अत्यधिक मूल्यवर्धित न हों। हालाँकि, अकादमिक और सीखने के दृष्टिकोण से, इन गहन शिक्षण आर्किटेक्चर को प्रदर्शित करने के लिए इन पैकेजों का उपयोग करने में योग्यता है। मेरे लिए, एएनएन विज़ुअलाइज़र बाकी हिस्सों से अलग है क्योंकि आरेख को पचाना आसान है, जबकि टेन्सरबोर्ड के ग्राफ़ आउटपुट को परिणामों का उपभोग करने से पहले अधिक तकनीकीताओं की आवश्यकता होती है।

गैवरिकोव, पी. (2022, 13 अप्रैल)। केरस/टेन्सरफ्लो के लिए विजुअलकेरस. गिटहब. https://github.com/paulgavrikov/visualkeras

घोरघिउ, टी. (2022, 21 अक्टूबर)। एएनएन विज़ुअलाइज़र. गिटहब. https://github.com/RedaOps/ann-visualizer

शाह, ए. (2018, 28 अप्रैल)। कोड की केवल एक पंक्ति के साथ कृत्रिम तंत्रिका नेटवर्क (एएनएन) की कल्पना करना. मध्यम। https://towardsdatascience.com/visualizing-artificial-neural-networks-anns-with-just-one-line-of-code-b4233607209e

स्टैक ओवरफ़्लो। (रा)। मशीन लर्निंग - आप न्यूरल नेटवर्क आर्किटेक्चर की कल्पना कैसे करते हैं? डेटा साइंस स्टैक एक्सचेंज। 29 अक्टूबर, 2022 को पुनःप्राप्त https://datascience.stackexchange.com/questions/12851/how-do-you-visualize-neural-network-architectures

टीम, के. (एनडी). केरस दस्तावेज़ीकरण: मॉडल प्लॉटिंग उपयोगिताएँ. Keras.io. 29 अक्टूबर, 2022 को पुनःप्राप्त https://keras.io/api/utils/model_plotting_utils/#modeltodot-function

टेंसरफ़्लो। (2022, 6 जनवरी)। टेंसरफ्लो ग्राफ़ की जांच | टेंसरबोर्ड. टेंसरफ़्लो। https://www.tensorflow.org/tensorboard/graphs

पायथन में न्यूरल नेटवर्क आर्किटेक्चर की कल्पना कैसे करें स्रोत https://towardsdatascience.com/how-to-visualize-neural-network-architectures-in-python-567cd2aa6d62?source=rss—-7f60cf5620c9—4 से https:// के माध्यम से पुनर्प्रकाशित wardsdatascience.com/feed

<!–

->

समय टिकट:

से अधिक ब्लॉकचेन कंसल्टेंट्स