微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Pytorch 中对多维样本批次正确使用 `CrossEntropyLoss`

如何解决在 Pytorch 中对多维样本批次正确使用 `CrossEntropyLoss`

我正在尝试像这样训练 LSTM 进行每帧分类

let property = dict.find((e) => e.name === eventKey)?.prop ?? ''
changeProp(property);

哪里self._lstm1 = nn.LSTM(input_size=16,hidden_size=50,num_layers=1,batch_first=True) self._log_probs = nn.Linear(50,4) self._criterion = nn.CrossEntropyLoss(reduction='mean',weight=self._class_weights_map)

训练到达线

self._class_weights_map == tensor([0.1340,0.1181,0.0000,0.7479],device='cuda:0',dtype=torch.float64)

where label_batch_int = torch.argmax(label_batch_one_hot.squeeze(),dim=-1) loss = self._criterion(log_probs,label_batch_int) [每批次 16 个样本,每个样本 10 帧,每帧 4 个对数概率]。因此 label_batch_one_hot.shape == (16,10,4) [每批次 16 个样本,每个样本 10 个预测整数,每个整数在 0 到 3 的范围内

哪里label_batch_int.shape == (16,10)

然后将条件输入 log_probs.shape == (16,4)log_probs.shape == (16,4) 并给出

label_batch_int.shape == (16,10)

如何在这种每批次多样本的情况下正确使用 {ValueError}Expected target size (16,4),got torch.Size([16,10])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。