[torch]criterion/maskzero

本文深入探讨了在PyTorch中如何使用criterion进行maskzero操作,详细解释了这一技巧在处理含有缺失值或无效数据时的重要性,并通过实例展示了其在神经网络训练过程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

require 'nn'
require 'rnn'

maxzero = 1
if maxzero == 1 then
        y_ = torch.Tensor{{1,5,2},{0,5,2},{0,0,0}}
        y = torch.Tensor{{2,3,1},{0,5,4},{0,0,0}}
        y = torch.Tensor{{2,3,1},{0,5,4},{1,1,1}}
else
        y_ = torch.Tensor{{1,5,2},{0,5,2}}
        y = torch.Tensor{{2,3,1},{0,5,4}}
end
print(y_,y)

c1 = nn.MSECriterion()
c2 = nn.MaskZeroCriterion(nn.MSECriterion(),1)
o1 = c1:forward(y_,y)
o2 = c2:forward(y_,y)
print(o1,o2)

c3 = nn.DistKLDivCriterion()
c4 = nn.MaskZeroCriterion(nn.DistKLDivCriterion(),1)
o3 = c3:forward(y_,y)
o4 = c4:forward(y_,y)
print(o3,o4)

if maxzero == 1 then
        y_ =  torch.Tensor{{-1.20397280433,-2.30258509299,-0.51082562376},{-2.30258509299,-0.22314355131,-2.30258509299},{0,0,0}} --{log0.3,log0.1,log0.6},{log0.1,log0.8,log0.1}
        y =  torch.Tensor{3,2,3}
else
        y_ =  torch.Tensor{{-1.20397280433,-2.30258509299,-0.51082562376},{-2.30258509299,-0.22314355131,-2.30258509299}}
        y = torch.Tensor{3,2}
end
c5 = nn.ClassNLLCriterion()
c6 = nn.MaskZeroCriterion(nn.ClassNLLCriterion(),1)
o5 = c5:forward(y_,y)
o6 = c6:forward(y_,y)
print(o5,o6)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值