2010南非世界杯_世界杯名单 - clywdl.com

使用 PyTorch 进行训练#

2026-10-07 02:59:13

每轮次(Epoch)活动#

在每个轮次中,我们通常需要做几件事

在一组未用于训练的数据上检查我们的相对损失来进行验证,并报告该损失

保存模型副本

在这里,我们将在 TensorBoard 中进行报告。这将需要到命令行启动 TensorBoard,并在另一个浏览器标签页中打开它。

# Initializing in a separate cell so we can easily add more epochs to the same run

timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')

writer = SummaryWriter(f'runs/fashion_trainer_{timestamp}')

epoch_number = 0

EPOCHS = 5

best_vloss = 1_000_000.

for epoch in range(EPOCHS):

print(f'EPOCH {epoch_number + 1}:')

# Make sure gradient tracking is on, and do a pass over the data

model.train(True)

avg_loss = train_one_epoch(epoch_number, writer)

running_vloss = 0.0

# Set the model to evaluation mode, disabling dropout and using population

# statistics for batch normalization.

model.eval()

# Disable gradient computation and reduce memory consumption.

with torch.no_grad():

for i, vdata in enumerate(validation_loader):

vinputs, vlabels = vdata

voutputs = model(vinputs)

vloss = loss_fn(voutputs, vlabels)

running_vloss += vloss

avg_vloss = running_vloss / (i + 1)

print(f'LOSS train {avg_loss} valid {avg_vloss}')

# Log the running loss averaged per batch

# for both training and validation

writer.add_scalars('Training vs. Validation Loss',

{ 'Training' : avg_loss, 'Validation' : avg_vloss },

epoch_number + 1)

writer.flush()

# Track best performance, and save the model's state

if avg_vloss < best_vloss:

best_vloss = avg_vloss

model_path = f'model_{timestamp}_{epoch_number}'

torch.save(model.state_dict(), model_path)

epoch_number += 1

EPOCH 1:

batch 1000 loss: 1.654247484177351

batch 2000 loss: 0.7726962686181068

batch 3000 loss: 0.6987732860718389

batch 4000 loss: 0.6221569780111312

batch 5000 loss: 0.5804557499862276

batch 6000 loss: 0.5524890179708017

batch 7000 loss: 0.5295137383388355

batch 8000 loss: 0.5009265253145714

batch 9000 loss: 0.5058054737325292

batch 10000 loss: 0.49260745361773295

batch 11000 loss: 0.468585665261955

batch 12000 loss: 0.45380957032914737

batch 13000 loss: 0.44796896913426465

batch 14000 loss: 0.41935056390626413

batch 15000 loss: 0.4201206929102191

LOSS train 0.4201206929102191 valid 0.40279826521873474

EPOCH 2:

batch 1000 loss: 0.41227510012625135

batch 2000 loss: 0.39864704573201015

batch 3000 loss: 0.4001820913331467

batch 4000 loss: 0.39508082253983595

batch 5000 loss: 0.36207930756598944

batch 6000 loss: 0.35573555010774727

batch 7000 loss: 0.3830765788261197

batch 8000 loss: 0.3624298877255933

batch 9000 loss: 0.3632407153651584

batch 10000 loss: 0.3778950179115636

batch 11000 loss: 0.3576152681231906

batch 12000 loss: 0.36515091116545956

batch 13000 loss: 0.3611713805411709

batch 14000 loss: 0.33597958153762736

batch 15000 loss: 0.343264871072548

LOSS train 0.343264871072548 valid 0.40966489911079407

EPOCH 3:

batch 1000 loss: 0.32743183934202535

batch 2000 loss: 0.3444891562992852

batch 3000 loss: 0.3291725230075281

batch 4000 loss: 0.3187070913249045

batch 5000 loss: 0.32714095296346934

batch 6000 loss: 0.30739905216288754

batch 7000 loss: 0.32212489395512967

batch 8000 loss: 0.29795379653651616

batch 9000 loss: 0.3247700735194667

batch 10000 loss: 0.315623918322759

batch 11000 loss: 0.33626489514997226

batch 12000 loss: 0.32514980087045114

batch 13000 loss: 0.338065604444957

batch 14000 loss: 0.3192359950903192

batch 15000 loss: 0.3433123947502827

LOSS train 0.3433123947502827 valid 0.3421742916107178

EPOCH 4:

batch 1000 loss: 0.30375947376329715

batch 2000 loss: 0.29673802652818265

batch 3000 loss: 0.3037119593455718

batch 4000 loss: 0.30708115856312906

batch 5000 loss: 0.3028442856037436

batch 6000 loss: 0.27089441766872185

batch 7000 loss: 0.3011226830706473

batch 8000 loss: 0.2984363955456356

batch 9000 loss: 0.3007340987546827

batch 10000 loss: 0.29771704207872973

batch 11000 loss: 0.31568263667479185

batch 12000 loss: 0.25841389897736733

batch 13000 loss: 0.30573024399650606

batch 14000 loss: 0.31712972641549275

batch 15000 loss: 0.2965977080956945

LOSS train 0.2965977080956945 valid 0.3430803716182709

EPOCH 5:

batch 1000 loss: 0.2697474466083549

batch 2000 loss: 0.2738529558030714

batch 3000 loss: 0.28960374634153413

batch 4000 loss: 0.268796529449495

batch 5000 loss: 0.3020780498078084

batch 6000 loss: 0.2722164069009668

batch 7000 loss: 0.2717584210411369

batch 8000 loss: 0.2732993564447643

batch 9000 loss: 0.2600738099713435

batch 10000 loss: 0.2821929820111945

batch 11000 loss: 0.29318459536922775

batch 12000 loss: 0.26708484860020687

batch 13000 loss: 0.2733659076172953

batch 14000 loss: 0.2895496564986479

batch 15000 loss: 0.3003611703527422

LOSS train 0.3003611703527422 valid 0.3127398192882538

要加载已保存的模型版本

saved_model = GarmentClassifier()

saved_model.load_state_dict(torch.load(PATH))

加载模型后,它就可以用于您所需的任何任务——进一步训练、推理或分析。

请注意,如果您的模型具有影响模型结构的构造函数参数,则需要提供这些参数,并对模型进行与保存时完全相同的配置。

2026 温和软毛电动牙刷推荐:6款护龈刷毛主流机型选购清单汇总 芒果TV暂不支持该地区播放?这样解决更有效