如何解决在 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 举报,一经查实,本站将立刻删除。