ما هي الأدوات التي يمكنني استخدامها لتصوير نموذج Keras؟ قد تكون القصة القديمة "تصميم صورة يستحق آلاف الكلمات" أكثر واقعية عند العمل مع نماذج التعلم الآلي المعقدة.إذا لم تتمكن من الحصول على ذاكرة تصويرية، يمكنك أن تفقد بسرعة أسطورة النماذج عند قراءة فقط من خلال الكود. لحسن الحظ، هناك بعض الطرق السهلة لإظهار نموذج التعلم الآلي.هذه الماجستير تركز على إظهار نموذج Keras وتستخدم النماذج التالية (ال"مجموعة الاختبار") للمشاركة في التعبير: 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) كما يمكنك أن ترى ، فإن النماذج أعلاه معقدة بشكل واضح. وهو يستخدم لتعلّم النماذج من وحدة قياس intertial ("IMU") وأي بيانات المحررين الأخرى. كما ستلاحظ ، يستخدم تعريف النماذج في النماذج الأصلية العناوين المخصصة لتجميع منطق معين يتكرر في تصميم النماذج. اخترت إزالة تلك العناوين وتحديدًا منطق "في الشبكة" بحيث يمكن رؤية بشكل أفضل بناء النماذج الكاملة في تطبيقي المعدل. كابيتال نوكيا يتناول هذا الدليل 3 أدوات التصوير التالية: Netron The Python package visualkeras TensorBoard استخدام Netron لتعريف نموذج Keras الخاص بك هو من أسهل أداة التصوير المتاحة. عليك ببساطة انقر فوق انقر فوق الصفحة الرئيسية ثم اختر النماذج التي ترغب في التصوير فيها، وهناك صورة لعدد من الطوابق الأولى من النماذج: نترون Open Model... بمجرد تحميل النماذج ، يمكنك الدردشة على الأقراص في جدول النماذج لإظهار خصائصها: يمكنك تصدير نموذج الكاميرا في و يتم تشكيلها عن طريق النقر على آلة البرنامج الرئيسي واختيار خيار التصدير المناسب. .png .svg 2 - استخدام رؤية نموذج Keras الخاص بك المرآة المرآة ذاك كما أنه من السهل جداً استخدام حزمة Python وتقدم طريقة سهلة للتحقق من نموذج قبل التدريب. يمكنك تثبيت حزمة لبرنامج التعلم الآلي الخاص بك باستخدام : visualkeras pip pip install visualkeras تظهر النسخة التالية من بطاقة Python استخدام البطاقة الأساسية: # [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 ويقدم البرنامج أيضاً الطريقة التي تنتج نموذجًا من طبقات النماذج التي تختلف عن النماذج والأبعاد: layered_view visualkeras.layered_view(model, legend=True).show() كما ترى، يمر لكل من يخلق النموذج كتابًا يصف كل طبقة: True legend واحدة من الفوائد من الخطة هي السيطرة التي تقدمها على كيفية عرض الأدوار. يمكنك مراجعة المواد المستخدمة لتعديل النتائج الأدبية على صفحة visualkeras حزمة الوثائق 3 - استخدام كيفية تصوير نموذج Keras TensorBoard TensorBoard هو خيار مناسب لتصوير نموذج Keras لأنه يتم تثبيتها مع مع بعض "المسح" ، من الممكن أيضًا استخدام رؤية هيكل نموذج قبل التدريب. 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 2.3 إعداد حزمة Jupyter لتشكيل نموذج Keras الخاص بك كما ذكرت أعلاه ، يمكنك رؤية نموذج 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 Notebook أعلاه ، يجب أن يتم إنتاج الخلية الأخيرة. بمجرد الانتهاء من تنفيذ الخلية، يمكنك التحليق إلى للقيام بمشاهدة لعبة Dashboard 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. لتمكين TensorBoard من بدء تشغيل بشكل صحيح كل مرة كنت أستطيع تشغيل محفظة Jupyter، يجب أولاً حذف جميع الملفات المؤقتة في C:\Users\[MY_WINDOWS_USERNAME]\AppData\Local\Temp\.tensorboard-info مكتبة. أنا تعمل على ويندوز 10 حيث وجدت بعض السلوك الغريب فيما يتعلق بال TensorBoard. للحصول على TensorBoard للبدء بشكل صحيح كل مرة كنت تقوم بتشغيل محفظة Jupyter، أنا بحاجة إلى حذف جميع الملفات المؤقتة في المديرية Tip: C:\Users\[MY_WINDOWS_USERNAME]\AppData\Local\Temp\.tensorboard-info 3.3 رؤية نموذج Keras الخاص بك مع TensorBoard يجب أن يتم فتح TensorBoard تلقائياً إلى أندرويد.إذا لم يكن لديك، يمكنك انقر فوق أو يمكنك اختيار بدلاً من ذلك من النسخة الخلفية. Graphs Graphs Graphs من من مشاهدة , Selection من أجل مشاهدة هيكل نموذجك، يجب أن ترى في البداية نقطة واحدة تشكل نموذجًا كاملًا. Graphs Conceptual graph يمكنك الدردشة المزدوجة على الأقراص الفردية داخل الهيكل العلوي للتعرف على خصائصها. TensorBoard يسمح لك أيضاً بتصدير النماذج النموذجية في النسخة .png النتيجة كل طريقة التصوير التي تناولت أعلاه لها فوائد ومزاياها. Netron سهل للغاية استخدامها مع النماذج المتعلمة في حين كما نرى، يمكن استخدام TensorBoard أيضًا مع النماذج غير المتعلمين، ولكن يتطلب الكثير من العمل لتثبيت بشكل صحيح. visualkeras