整個深度學習問題可以分為兩類:
化繁為簡:給出一堆資料,含有輸入和標籤,讓機器自己去學習到乙個規則,其中包含分類、回歸兩大問題。
化簡為繁:如現在給機器一些,讓機器自己學習然後生成一些或者文字,比如訓練集給的是人類平時的對話,讓機器能夠學習生成一些文字或影象等。如(gnn等)
首先看一下keras官方提供的資料庫可以供我們做練習:
此處我們使用mnist手寫數字資料庫做練習:
from keras.datases import mnist
(train_images, train_labels)
,(test_images, test_labels)
= mnist.load_data(
)
mnist資料庫裡的資料結構如下,稍後我們會將這些訓練集加入到神經網路進行訓練,讓神經網路能夠學出乙個規則,通常我們會在訓練集取一部分做驗證集(validaition set),因為假如我們在通過訓練集訓練一套引數的時候沒有分出來驗證集,然後將新的引數直接放在測試集的1000張**上進行測試,如果此時測試集表現出來的效果不好,我們就得返回去訓練集重新訓練,這個時候測試集就已經受到了汙染,因為測試集已經從中學到了一些資訊,如果往復進行這種操作,測試集就能學到更多的資訊,所以通常會在訓練集裡分出一部分做驗證集:
通過檢視訓練集資料的維度,可以看到資料集由60000張28*28畫素的組成:
下面開始匯入模型:
from keras import models
from keras import layers
network = models.sequential(
)network.add(layers.dense(
512, activation=
'relu'
, input_shape=(28
*28,)
))network.add(layers.dense(
10, activation=
'softmax'
))
該模型輸入資料要把每一行的畫素堆疊成乙個列向量輸入,形式如下:
網路結構如下:
結構分析:
下面開始優化:
network.
compile
(optimizer=
'rmsprop'
, loss=
'categorical_crossentropy'
, metrics=
['accuracy'
])
加入資料之前通常要對資料進行預處理:
train_images = train_images.reshape(
(60000,28
*28))
# 0-1有小數,所以用float32
train_images = train_images.astype(
'float32')/
255test_images = test_images.reshape(
(10000,28
*28))
test_images = test_images.astype(
'float32')/
255
資料預處理之資料無量綱化(標準化/歸一化)
轉換獨熱編碼(one-hot),這個理解一下:
from keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
下面開始訓練引數:
network.fit(train_images, train_labels, epochs=
5, batch_size=
128)
乙個批次設定為128,就是將60000個資料,一次丟入128個進去訓練,得出乙個loss,然後反向傳播回來更新一次引數,然後再丟128個資料進去,得出乙個loss,然後重複,如果把60000個資料丟完叫做乙個epoch,然後這裡做5個epoch,所以更新引數的次數為60000/128*5次。
對測試集進行評估:
test_loss, test_acc = network.evaluate(test_images, test_labels)
這一小節只是對mnist資料集舉個例子而已,比較容易,所以筆記內容不多,理解流程即可。 Python深度學習讀書筆記(二)(機器學習基礎)
第四章,機器學習基礎 二分類,多分類,標量回歸都屬於監督學習的例子。機器學習四大分支 監督學習 學會將輸入資料對映到已知目標,也叫做標註。監督學習變體 序列生成,語法樹檢測,目標檢測,影象分割。無監督學習 沒有目標的情況下尋找輸入資料的變換,目的在於資料視覺化,資料壓縮,資料去噪或更好理解資料中的相...
python深度學習讀書筆記 一
機器學習的要素 機器學習和深度學習的核心問題在於有意義的變換資料,換句話說在於學習輸入資料的有用表示 學習指的是尋找更好資料表示的自動搜尋過程 深度學習 學習資料表示的多級方法 1 深度學習的目標 尋找權重引數 2 深度學習的衡量標準 損失函式 3 深度學習的核心演算法 反向傳播演算法 載入kera...
深度學習讀書筆記(1)
欠擬合 模型不能在訓練集上獲得足夠低的誤差 過擬合 訓練誤差和測試誤差之間的差距太大。通過調整模型的容量,可以控制模型是否偏向過擬合或者欠擬合。從預先知道的真實分布p x,y 而出現的誤差被稱為貝葉斯誤差。任何模型容量小於最優容量的固定引數模型會漸進到大於貝葉斯誤差的誤差值。在所有可能的資料生成分布...