簡體   English   中英

如何調試 keras model

[英]How do I debug keras model

我正在閱讀手寫文本識別教程。 為了進行手寫數字識別,作者構建了一個 Keras model 如下:

# # Creating CNN model

input_shape = (28,28,1)
number_of_classes = 10

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),activation='relu',input_shape=input_shape))

model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))

model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))

model.add(Dropout(0.5))
model.add(Dense(number_of_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),metrics=['accuracy'])

model.summary()

history = model.fit(X_train, y_train,epochs=5, shuffle=True,
                    batch_size = 200,validation_data= (X_test, y_test))


model.save('digit_classifier2.h5')

來源( 這里

我很困惑作者是如何選擇這些層的。 我知道Conv2D如何通過對圖像應用過濾器來工作,我知道什么是activation function 簡而言之,我對每個術語的含義有一個粗略的理解。

我發現困難的是我怎么知道這段代碼的每一步發生了什么? 例如,讓我們使用這個 python 代碼:

values_List=[11,34,43]
for index, num in enumerate(values_List):
    print(index,num)
  1. 我知道第 1 行初始化了一個名為 values_List 的列表
  2. 第 2 行遍歷此列表
  3. 第 3 行將 output 打印為(數字的索引,數字)

此 python 代碼易於理解和調試。 但我很困惑,如果 keras 層內有任何錯誤。 如何繼續調試此 Keras 代碼? 如何在 Keras 代碼內的每個步驟中看到 output?

簡而言之,您不能在 Keras 中輕松調試,因為它是高級 API,用於使用預定義的層和函數更快、更輕松地實現神經網絡架構,這些層或 ZC1C425268E68384F145A 內部出錯的可能性較小。測試良好。

如果您想對您進行更細粒度的控制,您需要在低級 API 中實現,如 Tensorflow v1 或在 Z074DD699710DA70EC1EB45F13E3 中使用tf.GradientTape和 tf-keras 在每個 step.8 的梯度。

您還可以嘗試 Microsoft 的 Tensorwatch,以更深入地了解您的 model - https://github.com/microsoft/tensorwatch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM