मैं किन उपकरणों का उपयोग कर सकता हूं केरास मॉडल को दर्शाने के लिए? पुराने क्लिच "एक चित्र एक हजार शब्दों के लायक है" जटिल मशीन लर्निंग मॉडल के साथ काम करते समय और भी अधिक सच हो सकता है। सौभाग्य से, मशीन सीखने के मॉडल को दर्शन करने के कुछ आसान तरीके हैं. यह गाइड केरास मॉडल के दर्शन पर केंद्रित है और यह प्रदर्शन के लिए निम्नलिखित मॉडल ( "टेस्ट मॉडल") का उपयोग करता है: def build_model(pad_len, imu_dim, tof_dim, n_classes): def time_sum(x): return K.sum(x, axis=1) def squeeze_last_axis(x): return tf.squeeze(x, axis=-1) def expand_last_axis(x): return tf.expand_dims(x, axis=-1) filters_l1 = 64 kernel_l1 = 3 filters_l2 = 128 kernel_l2 = 5 reduction = 8 pool_size = 2 drop = 0.3 wd = 1e-4 inp = Input(shape=(pad_len, imu_dim + tof_dim)) imu = Lambda(lambda t: t[:, :, :imu_dim])(inp) tof = Lambda(lambda t: t[:, :, imu_dim:])(inp) # First CNN branch shortcut_1 = imu x1 = Conv1D(filters_l1, kernel_l1, padding="same", use_bias=False, kernel_regularizer=l2(wd))(imu) x1 = BatchNormalization()(x1) x1 = Activation("relu")(x1) x1 = Conv1D(filters_l1, kernel_l1, padding="same", use_bias=False, kernel_regularizer=l2(wd))(x1) x1 = BatchNormalization()(x1) x1 = Activation("relu")(x1) ch = x1.shape[-1] se = GlobalAveragePooling1D()(x1) se = Dense(ch//reduction, activation="relu")(se) se = Dense(ch, activation="sigmoid")(se) se = Reshape((1, ch))(se) x1 = Multiply()([x1, se]) if shortcut_1.shape[-1] != filters_l1: shortcut_1 = Conv1D(filters_l1, 1, padding="same", use_bias=False, kernel_regularizer=l2(wd))(shortcut_1) shortcut_1 = BatchNormalization()(shortcut_1) x1 = add([x1, shortcut_1]) x1 = Activation("relu")(x1) x1 = MaxPooling1D(pool_size)(x1) x1 = Dropout(drop)(x1) shortcut_2 = x1 x1 = Conv1D(filters_l2, kernel_l2, padding="same", use_bias=False, kernel_regularizer=l2(wd))(x1) x1 = BatchNormalization()(x1) x1 = Activation("relu")(x1) x1 = Conv1D(filters_l2, kernel_l2, padding="same", use_bias=False, kernel_regularizer=l2(wd))(x1) x1 = BatchNormalization()(x1) x1 = Activation("relu")(x1) ch = x1.shape[-1] se = GlobalAveragePooling1D()(x1) se = Dense(ch//reduction, activation="relu")(se) se = Dense(ch, activation="sigmoid")(se) se = Reshape((1, ch))(se) x1 = Multiply()([x1, se]) if shortcut_2.shape[-1] != filters_l2: shortcut_2 = Conv1D(filters_l2, 1, padding="same", use_bias=False, kernel_regularizer=l2(wd))(shortcut_2) shortcut_2 = BatchNormalization()(shortcut_2) x1 = add([x1, shortcut_2]) x1 = Activation("relu")(x1) x1 = MaxPooling1D(pool_size)(x1) x1 = Dropout(drop)(x1) # Second CNN branch x2 = Conv1D(filters_l1, kernel_l1, padding="same", use_bias=False, kernel_regularizer=l2(wd))(tof) x2 = BatchNormalization()(x2) x2 = Activation("relu")(x2) x2 = MaxPooling1D(2)(x2) x2 = Dropout(0.2)(x2) x2 = Conv1D(filters_l2, kernel_l1, padding="same", use_bias=False, kernel_regularizer=l2(wd))(x2) x2 = BatchNormalization()(x2) x2 = Activation("relu")(x2) x2 = MaxPooling1D(2)(x2) x2 = Dropout(0.2)(x2) merged = Concatenate()([x1, x2]) xa = Bidirectional(LSTM(128, return_sequences=True, kernel_regularizer=l2(wd)))(merged) xb = Bidirectional(GRU(128, return_sequences=True, kernel_regularizer=l2(wd)))(merged) xc = GaussianNoise(0.09)(merged) xc = Dense(16, activation="elu")(xc) x = Concatenate()([xa, xb, xc]) x = Dropout(0.4)(x) score = Dense(1, activation="tanh")(x) score = Lambda(squeeze_last_axis)(score) weights = Activation("softmax")(score) weights = Lambda(expand_last_axis)(weights) context = Multiply()([x, weights]) x = Lambda(time_sum)(context) x = Dense(256, use_bias=False, kernel_regularizer=l2(wd))(x) x = BatchNormalization()(x) x = Activation("relu")(x) x = Dropout(0.5)(x) x = Dense(128, use_bias=False, kernel_regularizer=l2(wd))(x) x = BatchNormalization()(x) x = Activation("relu")(x) x = Dropout(0.3)(x) out = Dense(n_classes, activation="softmax", kernel_regularizer=l2(wd))(x) return Model(inp, out) जैसा कि आप देख सकते हैं, उपरोक्त मॉडल काफी जटिल है। यह इंटरटील माप यूनिट ("IMU") और अन्य सेंसर डेटा से पैटर्न सीखने के लिए उपयोग किया जाता है। जैसा कि आप देखेंगे, मूल नोटबुक में मॉडल परिभाषा कुछ तर्क को कवर करने के लिए अनुकूलित वस्तुओं का उपयोग करती है जो मॉडल डिजाइन में दोहराया जाता है. मैंने उन वस्तुओं को हटाने और स्पष्ट रूप से तर्क "इनलाइन" को परिभाषित करने का विकल्प चुना ताकि मेरी थोड़ा संशोधित कार्यान्वयन में मॉडल की पूरी संरचना को बेहतर ढंग से देखा जा सके. नोटबुक कागज यह गाइड निम्नलिखित 3 विज़ुअलाइज़ेशन उपकरणों पर चर्चा करता है: Netron The Python package visualkeras TensorBoard 1. अपने Keras मॉडल को दर्शाने के लिए Netron का उपयोग करना यह संभवतः सबसे सरल विज़ुअलाइज़ेशन टूल है. आपको बस उस पर क्लिक करने की आवश्यकता है होम पेज पर क्लिक करें और फिर उस मॉडल का चयन करें जिसे आप दर्शन करना चाहते हैं. यहाँ परीक्षण मॉडल के पहले कुछ परतों का एक दर्शन है: नेटवर्क Open Model... एक बार मॉडल लोड किया गया है, आप उनके गुणों को देखने के लिए मॉडल ग्राफ में नोड्स पर क्लिक कर सकते हैं: आप मॉडल ग्राफ को निर्यात कर सकते हैं और मुख्य मेनू आइकन पर क्लिक करके और उचित निर्यात विकल्प चुनें। .png .svg 2. उपयोग अपने Keras मॉडल को दर्शाने के लिए दृष्टिकोण दृष्टिकोण के पायथन पैकेज का उपयोग करना भी बहुत आसान है और प्रशिक्षण से पहले एक मॉडल को देखने का एक सुविधाजनक तरीका प्रदान करता है। : visualkeras pip pip install visualkeras निम्नलिखित पायथन कोड पैकेज के बुनियादी उपयोग को दर्शाता है: # [Imports for your Keras model here...] import visualkeras # [Utility function to build your Keras model...] def build_model(model_params): # [Your model definition here...] # [Build the model...] model = build_model(model_params) # [Visualize the model...] visualkeras.graph_view(model).show() के विधि परीक्षण मॉडल के पहले कुछ परतों के निम्नलिखित ग्राफिक्स का उत्पादन करती है: graph_view पैकेज भी प्रदान करता है a एक विधि जो मॉडल परतों का एक ग्राफिक्स पैदा करती है जो प्रकार और आकार के अनुसार भिन्न होती है: layered_view visualkeras.layered_view(model, legend=True).show() जैसा कि देखा गया है, पार के लिए पैरामीटर प्रत्येक परत का वर्णन करने वाला एक कथा उत्पन्न करता है: True legend एक लाभ के लिए पैकेज यह नियंत्रण प्रदान करता है कि ग्राफिक्स कैसे प्रदर्शित होते हैं. आप ग्राफिक्स आउटपुट को संशोधित करने के लिए इस्तेमाल किए गए पैरामीटरों की समीक्षा कर सकते हैं पृष्ठ visualkeras पैकेज दस्तावेज 3. उपयोग एक Keras मॉडल को देखने के लिए TensorBoard टेंसरबोर्ड एक केरास मॉडल को देखने के लिए एक सुविधाजनक विकल्प है क्योंकि यह एक साथ स्थापित किया जाता है थोड़ा "मसाज" के साथ, इसका उपयोग करना भी संभव है प्रशिक्षण से पहले मॉडल की संरचना को दर्शाने के लिए। TensorBoard TensorFlow TensorBoard 3.1 स्थापित करें पैकेज jupyter-tensorboard इस अनुभाग का उपयोग A के संदर्भ में यह स्थापित करने के लिए आवश्यक है पैकेज, जिसका बदले में कुछ निर्भरताएं हैं. स्थापित करने के लिए निम्न चरणों का उपयोग करें : TensorBoard Jupyter notebook jupyter-tensorboard jupyter-tensorboard Install the package using . jupyter pip install jupyer Use the command to the package which was installed with the package installation process. The version of the package installed with which is as of this writing is not compatible with . This downgrade step installs a version of the package that is compatible with . See this for more information. pip install --upgrade notebook==6.4.12 downgrade notebook jupyter notebook jupyter 7.4.5 jupyter-tensorboard notebook jupyter-tensorboard StackOverflow article Install the package using . jupyter-tensorboard pip install jupyter-tensorboard 3.2 अपने Keras मॉडल को दर्शाने के लिए एक Jupyter नोटबुक सेट करना जैसा कि ऊपर उल्लेख किया गया है, आप एक Keras मॉडल को वर्णन कर सकते हैं इसे प्रशिक्षित करने से पहले. निम्नलिखित Jupyter नोटबुक कोड दिखाता है कि परिचय अनुभाग से परीक्षण मॉडल का उपयोग कैसे किया जाए: TensorBoard # Cell 1: Imports import tensorflow as tf from tensorflow.keras.models import Model, load_model from tensorflow.keras.layers import ( Input, Conv1D, BatchNormalization, Activation, add, MaxPooling1D, Dropout, Bidirectional, LSTM, GlobalAveragePooling1D, Dense, Multiply, Reshape, Lambda, Concatenate, GRU, GaussianNoise ) from tensorflow.keras.regularizers import l2 from tensorflow.keras import backend as K # Cell 2: Set logs directory LOG_DIR = "logs" # Cell 3: Utility function to build model # [`build-model` function for test model from introductory section here...] # Cell 4: Build the model model = build_model(398, 12, 335, 18) # Cell 5: Compile the model model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"]) # Cell 6: Create a TensorBoard callback tensorboard_callback = tf.keras.callbacks.TensorBoard( log_dir=LOG_DIR, histogram_freq=1, write_graph=True, profile_batch=0 # Disable profiling ) # Cell 7: Create dummy `x` and `y` training inputs that match model input and output shapes dummy_x_input = tf.random.normal((1, 398, 347)) # Batch size 1, input shape (398,347) dummy_y_input = tf.random.normal((1, 18)) # Batch size 1, input shape (18, ) # Cell 8: "Train" the model for zero epochs to create a conceptual graph of the model model.fit(dummy_x_input, dummy_y_input, epochs=0, batch_size=1, callbacks=[tensorboard_callback]) # Cell 9: Load the TensorBoard notebook extension %load_ext tensorboard # Cell 10: Launch TensorBoard %tensorboard --logdir $LOG_DIR --host localhost यदि आप उपरोक्त Jupyter नोटबुक कोड चलाते हैं, तो अंतिम कोशिका का आउटपुट होना चाहिए एक बार जब सेल संचालन पूरा हो जाता है, तो आप मार्गदर्शन कर सकते हैं को देखने के लिए डैशबोर्ड Launching TensorBoard http://localhost:6006 TensorBoard आप TensorBoard पोर्ट को --port विकल्प को %tensorboard जादुई कमांड में स्थानांतरित करके संशोधित कर सकते हैं, उदाहरण के लिए %tensorboard --logdir $LOG_DIR --host localhost --port 8088. आप TensorBoard पोर्ट को परिवर्तित कर सकते हैं के लिए विकल्प जादू कमांड, ई.जी. . --port %tensorboard %tensorboard --logdir $LOG_DIR --host localhost --port 8088 टिप: मैं विंडोज 10 पर चल रहा हूं जहां मैंने TensorBoard के संबंध में कुछ अजीब व्यवहार देखा है. हर बार जब मैं एक Jupyter नोटबुक चलाता हूं तो TensorBoard को सही ढंग से लॉन्च करने के लिए, मुझे पहले C:\Users\[MY_WINDOWS_USERNAME]\AppData\Local\Temp\.tensorboard-info निर्देशिका में सभी अस्थायी फ़ाइलों को हटाना होगा। मैं विंडोज 10 पर चल रहा हूं जहां मैंने TensorBoard के संबंध में कुछ अजीब व्यवहार नोट किया है. हर बार जब मैं एक Jupyter नोटबुक चलाता हूं तो TensorBoard को सही ढंग से लॉन्च करने के लिए, मुझे पहले सभी अस्थायी फ़ाइलों को हटाना होगा निदेशक Tip: C:\Users\[MY_WINDOWS_USERNAME]\AppData\Local\Temp\.tensorboard-info 3.3 TensorBoard के साथ अपने Keras मॉडल को दर्शाना TensorBoard को स्वचालित रूप से खोला जाना चाहिए डैशबोर्ड. यदि नहीं है, तो आप उस पर क्लिक कर सकते हैं मेनू विकल्प या आप वैकल्पिक चुन सकते हैं ड्रॉप-अप मेनू से Graphs Graphs Graphs से से देखें, चुनें अपने मॉडल की संरचना को देखने के लिए. आपको शुरू में पूरे मॉडल का प्रतिनिधित्व करने वाले एकल नोड को देखना चाहिए. उप-ग्राफ संरचना को देखने के लिए नोड पर डबल-क्लिक करें. Graphs Conceptual graph आप उनके गुणों को देखने के लिए उप-ग्राफ संरचना के भीतर व्यक्तिगत नोड्स पर डबल-क्लिक कर सकते हैं. TensorBoard आपको मॉडल ग्राफ को निर्यात करने की भी अनुमति देता है प्रारूप है। .png निष्कर्ष ऊपर चर्चा की गई प्रत्येक विज़ुअलाइज़ेशन विधि के अपने फायदे और नुकसान हैं. Netron प्रशिक्षित मॉडल के साथ उपयोग करना बेहद आसान है जबकि जैसा कि देखा गया है, TensorBoard का उपयोग अनियंत्रित मॉडल के साथ भी किया जा सकता है, लेकिन इसे ठीक से सेट करने के लिए थोड़ा अधिक काम की आवश्यकता होती है। visualkeras