在train(hyp)函式中,進行訓練前的準備
def
train
(hyp)
: epochs = opt.epochs # 300 最大迭代次數
batch_size = opt.batch_size # 64 乙個batch的大小
weights = opt.weights # initial training weights 初始化權重檔案路徑
# configure
init_seeds(1)
# 設定random、np.random、torch隨機種子
with
open
(opt.data)
as f:
data_dict = yaml.load(f, loader=yaml.fullloader)
# model dict 載入yaml資料檔案
train_path = data_dict[
'train'
]# 儲存訓練資料的txt檔案路徑
test_path = data_dict[
'val'
]# 儲存驗證資料的txt檔案路徑
nc =
1if opt.single_cls else
int(data_dict[
'nc'])
# number of classes 獲取類別數
# remove previous results 清空以前的結果
# glob.glob(pathname)返回匹配pathname的可能為空的路徑名列表
# create model 初始化網路結構
model = model(opt.cfg)
.to(device)
# assert(斷言)用於判斷乙個表示式,在表示式條件為 false 的時候觸發異常
# 判斷cfg檔案中類別數和data檔案中的類別數是否相等
assert model.md[
'nc'
]== nc,
'%s nc=%g classes but %s nc=%g classes'
%(opt.data, nc, opt.cfg, model.md[
'nc'])
# image sizes
gs =
int(
max(model.stride)
)# grid size (max stride)
ifany
(x % gs !=
0for x in opt.img_size)
:# img size 必須整除 max stride
print
('warning: --img-size %g,%g must be multiple of %s max stride %g'%(
*opt.img_size, opt.cfg, gs)
) imgsz, imgsz_test =
[make_divisible(x, gs)
for x in opt.img_size]
# image sizes (train, test)
# optimizer
nbs =
64# nominal batch size
accumulate =
max(
round
(nbs / batch_size),1
)# accumulate loss before optimizing
hyp[
'weight_decay'
]*= batch_size * accumulate / nbs # scale weight_decay
pg0, pg1, pg2 =,,
# optimizer parameter groups 優化引數
for k, v in model.named_parameters():
if v.requires_grad:
if'.bias'
in k:
# biases
elif
'.weight'
in k and
'.bn'
notin k:
else
:# all else
# 選取優化函式
optimizer = optim.adam(pg0, lr=hyp[
'lr0'])
if opt.adam else \
optim.sgd(pg0, lr=hyp[
'lr0'
], momentum=hyp[
'momentum'
], nesterov=
true
) optimizer.add_param_group(
)# add pg1 with weight_decay
optimizer.add_param_group(
)# add pg2 (biases)
print
('optimizer groups: %g .bias, %g conv.weight, %g other'%(
len(pg2)
,len
(pg1)
,len
(pg0)))
del pg0, pg1, pg2
.......
..
yolov5訓練自己的資料集
然後進入拉取的yolov5的docker容器中 參考教程 sudo nvidia docker run ipc host it v data coco128 usr src coco128 yolo bin bash 注意一定要用nvidia docker這樣才可以執行gpu環境 預設路徑在 usr...
yolov5訓練自己的資料集
1.資料準備 label 格式如下 資料集格式如下,確保label和mages這兩個資料夾在同一目錄裡 image train 存放訓練 val 存放驗證 label train 存放訓練label x.txt val 存放驗證label 2.配置自己的.yaml檔案,放在data資料夾下,3.選擇...
PyTorch學習筆記5 批訓練
1 torch.utils.data.tensordataset 和torch.utils.data.dataloader pytorch提供了乙個資料讀取的方法,其由兩個類構成 torch.utils.data.dataset和dataloader,我們要自定義自己資料讀取的方法,就需要繼承tor...