建立模型并進(jìn)行訓(xùn)練主要分5步:
- 數(shù)據(jù)處理
1.1 數(shù)據(jù)收集 : Img,Label
1.2 數(shù)據(jù)劃分:train,valid,test【訓(xùn)練集,驗(yàn)證集。測(cè)試集】
1.3 數(shù)據(jù)讀?。篋ateLoader【Sampler:Index;Dataset:Img,Label】
1)讀哪些數(shù)據(jù)
了解數(shù)據(jù)內(nèi)容及數(shù)據(jù)文件包位置,通過index知道讀取哪些數(shù)據(jù),Sampler輸出的Index
2)從哪讀數(shù)據(jù)
設(shè)置數(shù)據(jù)存儲(chǔ)的路徑【分為絕對(duì)和相對(duì)路徑,建議使用相對(duì)路徑】,Dataset中的data_dir
3)怎么讀數(shù)據(jù)
通過Dateset讀取本地?cái)?shù)據(jù),getitem
1.4 數(shù)據(jù)預(yù)處理:transforms
torchvision計(jì)算機(jī)視覺工具包
包含transforms,datasets和model模塊
transforems常用預(yù)處理方法:
數(shù)據(jù)中心化,數(shù)據(jù)標(biāo)準(zhǔn)化,縮放,裁剪,旋轉(zhuǎn),翻轉(zhuǎn),填充,噪聲增加,灰度變換,線性變換,仿射變換,亮度、飽和度及對(duì)比度變換
用于數(shù)據(jù)預(yù)處理及增強(qiáng),目的為提高泛化能力
具體22種方法:
https://blog.csdn.net/qq_38410428/article/details/94719553
例子:
transforms.Compose([transforms.resize((32,32)),transforms.RandomCrop(32,padding=4),tansform.ToTensor(),tansforms.Normalize(norm_mean,norm_std)])
# 縮放,隨機(jī)裁剪,變成張量形式,數(shù)據(jù)標(biāo)準(zhǔn)化
核心概念:數(shù)據(jù)增強(qiáng):對(duì)訓(xùn)練集進(jìn)行變換,使訓(xùn)練集更豐富,具有泛化能力
模型建立
選擇合適的損失函數(shù)
損失函數(shù)的目的是計(jì)算梯度,即計(jì)算得到的值和原標(biāo)簽值相差
根據(jù)不同數(shù)據(jù)及訓(xùn)練目標(biāo),其所使用的損失函數(shù)也不盡相同選擇合適的優(yōu)化器
優(yōu)化器即使用合適的方式對(duì)損失函數(shù)進(jìn)行向后傳播,常用SGD,Adam
詳見:https://blog.csdn.net/weixin_40170902/article/details/80092628迭代訓(xùn)練
主要分epoch,iter,batch-size
epoch: 全部訓(xùn)練樣本訓(xùn)練一次
iter: 每個(gè)batch訓(xùn)練完一次
batch-size: 一同放入內(nèi)存進(jìn)行計(jì)算的數(shù)據(jù)量大小