深度网络定义与使用
深度網絡定義與使用
深度網絡定義與使用
- 深度網絡定義與使用
- 1. 定義網絡
- 2. 定義損失函數
- 3. 定義優化方法
- 實例:
具體可見:https://zh.d2l.ai/chapter_linear-networks/linear-regression-concise.html
深度學習總體框架包括:
數據準備,定義模型(輸入,輸出,前向傳播),定義損失函數(網絡輸出與真值的函數關系),定義優化方法(基于已有梯度更新參數的方法),訓練(迭代次數,輸出loss)
1. 定義網絡
class MLP(nn.Module)
init() 是數據準備,定義forward函數中所需要的參數
forwar()函數要跑一遍傳播過程
總體包括:
(可選)參數初始化
前向運算
激活函數,或者自己寫的任意函數,進行傳遞
輸出
2. 定義損失函數
網絡輸出與真值之間的損失函數
3. 定義優化方法
梯度可以通過自動求導求得。如何更新參數,要根據優化方法來確定。sgd,adam等
網絡是按照batch更新新的,梯度取batchsize的平均進行更新
實例:
num_epochs = 3 for epoch in range(num_epochs):for X, y in data_iter:l = loss(net(X) ,y)trainer.zero_grad()l.backward()#更新梯度(根據輸入緯度和網絡定義的緯度判斷batchsize并更新梯度)trainer.step()l = loss(net(features), labels)print(f'epoch {epoch + 1}, loss {l:f}')總結
- 上一篇: 学好C++该看什么书呢?
- 下一篇: ROS turtlesim小乌龟的使用与