李巨集毅機器學習 8 深度學習初試

2022-09-10 20:57:16 字數 1741 閱讀 3498

keras

keras是希臘語中牛角的意思(horn)

官網:例子:

學習和使用更簡單

可以把模型儲存起來方便下次訓練,需要時再載入:

mnist

簡單使用

# 定義乙個模型

model = sequential()

# 新增input layer和第一層hidden layer

# input是28*28的矩陣

# 第一層hidden layer有500個neuron

# 每個neuron的啟用函式是relu,也可以選其他的,比如sigmoid, softplus...

model.add(dense(input_dim=28*28, units=500, activation='relu'))

# 新增第二層hidden layer,有500個neuron,啟用函式是relu

model.add(dense(units=500, activation='relu'))

# 新增output layer,有10個neuron,對應於10個輸出

# 啟用函式是softmax,表明輸出值在0~1之間

model.add(dense(units=10, activation='softmax'))

# 選擇loss function為cross entropy,也可以選其他的

# 選擇learning rate更新演算法為adam,也可以選其他的,比如adagrad...

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

# 給定訓練集輸入x_train和標記y_train,設定batch大小和迭代次數,開始訓練

model.fit(x_train, y_train, batch_size=100, epochs=20)

# 已知正確輸出y_test的情況下對模型進行測試,可以得到total loss和accuracy

score = model.evaluate(x_test, y_test)

print('total loss on testing set:', score[0])

print('accuracy of testing set:', score[1])

# 使用模型**未知資料

result = model.predict(x_test)

mini-batch

不是最小化total loss

batch_size會影響模型的訓練速度和最終的表現

batch_size=1時,就是stochastic gradient descent

根據實驗,batch_size越大,每個epoch內更新引數的次數就越少,花費的時間就越少,但是相同時間內總的更新引數的次數大致相同

既然訓練速度差不多,選擇較大的batch_size更好,因為相對於batch_size=1,較大的batch_size更穩定,收斂也更快

過大的batch_size訓練得到的模型的表現會很差,因為容易陷入local minima

gpu的平行計算也能使mini-batch的訓練速度相對於stochastic gradient descent更快,儘管在理論上二者的計算量是一樣的

李巨集毅《深度學習》 深度學習簡介

深度學習分為三部分 定義一系列方程,計算方程的loss,然後選出最好的方程 深度學習神經網路類似於人類的大腦的神經網路,每個方程可以看做乙個神經元,不同神經元連線會產生不同結果,在這裡我們介紹一下fully connect feedforward network 每個神經元都與下一層全部的神經元連線...

李巨集毅機器學習attack model 學習筆記

loss函式及限制條件 無目標攻擊 l 負的 y 與y true 交叉熵 輸入的x 使y 與y true越遠越好 有目標攻擊 輸入的x 使y 與y true越遠越好且y 與y false越近越好 限制條件 x與x0距離需要小於乙個值,不被發現,否則攻擊就無意義 攻擊的目標是x在乙個小的變化內使模型失...

李巨集毅機器學習 學習筆記

function set就是model 機器學習3大步驟 1.定義模型 function 集合 2.指定模型 function 好壞的評價指標 3.通過演算法選擇到最佳的模型 function alphago下棋模型抽象為棋局向下一步的分類問題 減少擁有label的data用量的方法 1.semi ...