Pytorch(2)-内置/自己设计的损失函数使用

内置/自己设计的损失函数使用对比


Pytorch内置了许多常用的损失函数,但是,实际应用中,往往需要依据不同的需求设计不同的损失函数。本篇博文对比总结了使用 内置自己设计损失函数的语法规则流程。

1.内置损失函数的使用语法

使用内嵌的损失函数:

 
optimizer_d = torch.optim.Adam(netd.parameters(), opt.lr2, betas=(opt.beta1, 0.999))	#要优化网路netd中的参数,使用Adam优化算法
criterion = t.nn.BCELoss().to(device)		#官方损失函数
output = netd(real_img)							#网络输出 output
error_d_real = criterion(output, true_labels)	#将网路输出output传入损失函数计算真实值,一批次的输出直接穿传进去
optimizer_d.zero_grad()							#要优化参数梯度归零	
error_d_real.backward()							#由损失函数从最后一层开始极端各个参数的梯度
optimizer_d.step()								#梯度反向传播,更新参数

2.自己设计损失函数的语法

optimizer_D = torch.optim.Adam(D.parameters(), lr=LR_D)     			#要优化网路D中的参数,使用Adam优化算法
prob_artist0 = D(artist_paintings)          							#网络输出prob_artist0
D_loss = - torch.mean(torch.log(prob_artist0) + torch.log(1. - prob_artist1))	#自己设计的损失函数,直接由网络输出prob_artist0计算损失
optimizer_D.zero_grad()													#要优化参数梯度归零
D_loss.backward(retain_graph=True)      								#由损失函数从最后一层开始的各个参数的梯度
optimizer_D.step()														#梯度反向传播,更新参数

核心过程都是一样的,只不过在实际使用时会因为编程需要调整一些步骤的顺序。

猜你喜欢

转载自blog.csdn.net/sinat_40624829/article/details/91125771
今日推荐