演算法工程師修仙之路 Keras(四)

2021-09-11 00:04:11 字數 1043 閱讀 2974

接下來的工作流程如下:

神經網路的核心元件是層(layer)。

要想訓練網路,我們還需要選擇編譯(compile)步驟的三個引數。

優化器(optimizer)在訓練和測試過程中需要監控的指標(metric)

# 編譯步驟

network.compile(optimizer = 'rmsprop', loss='categorical_crossentropy',

metrics=['accuracy'])

資料預處理

對標籤進行分類編碼

# 準備標籤

from keras.utils import to_categorical

train_labels = to_categorical(train_labels)

test_labels = to_categorical(test_labels)

現在我們準備開始訓練網路,在 keras 中這一步是通過呼叫網路的 fit 方法來完成的,我們在訓練資料上擬合(fit)模型。

>>> network.fit(train_images, train_labels, epochs=5, batch_size=128)

訓練過程中顯示了兩個數字:乙個是網路在訓練資料上的損失(loss),另乙個是網路在訓練資料上的精度(acc)。

現在我們來檢查一下模型在測試集上的效能。

>>> test_loss, test_acc = network.evaluate(test_images, test_labels)

>>> print('test_acc:', test_acc)

訓練精度和測試精度之間的差距是過擬合(overfit)造成的,過擬合是指機器學習模型在新資料上的效能往往比在訓練資料上要差。

演算法工程師修仙之路 Keras(三)

由於這一領域是靠實驗結果而不是理論指導的,所以只有當合適的資料和硬體可用於嘗試新想法時 或者將舊想法的規模擴大,事實往往也是如此 才可能出現演算法上的改進。機器學習不是數學或物理學,靠一支筆和一張紙就能實現重大進展。它是一門工程科學。硬體 資料如果有乙個資料集是深度學習興起的催化劑的話,那麼一定是 ...

演算法工程師修仙之路 TensorFlow(二)

張量在 tensorflow 中的實現並不是直接採用陣列的形式,它只是對tensorflow 中運算結果的引用。在張量中並沒有真正儲存數字,它儲存的是如何得到這些數字的計算過程。tensorflow中的張量和 numpy 中的陣列不同,tensorflow 計算的結果不是乙個具體的數字,而且乙個張量...

演算法工程師修仙之路 TensorFlow(五)

乙個最簡單的神經元結構的輸出就是所有輸入的加權和,而不同輸入的權重就是神經元的引數。神經網路的優化過程就是優化神經元中引數取值的過程。全連線神經網路是相鄰兩層之間任意兩個節點之間都有連線的神經網路結構。乙個簡單的判斷零件是否合格的三層全連線神經網路。第二個部分為神經網路的連線結構。最後乙個部分是每個...