Pytorch中multi-target不支持如何改写?
- 内容介绍
- 文章标签
- 相关推荐
本文共计846个文字,预计阅读时间需要4分钟。
在使用交叉熵损失函数时,`target` 的形状应该与 `label` 的形状一致,或者是仅有一个维度的 `batchsize`。例如,如果 `target` 是这样的 `[batchsize, 1]`,就会出现上述错误。下面是修改后的内容尝试:
在使用交叉熵损失函数时,确保 `target` 的形状与 `label` 相匹配,或者仅包含一个 `batchsize` 维度。若 `target` 形状为 `[batchsize, 1]`,则可能出现错误。尝试使用 squeeze() 函数(`squeeze()`)解决。
在使用交叉熵损失函数的时候,target的形状应该是和label的形状一致或者是只有batchsize这一个维度的。
如果target是这样的就会出现上述的错误。
改一下试试,用squeeze()函数降低纬度,
如果不知道squeeze怎么用的,
可以参考这篇文章。pytorch下的unsqueeze和squeeze用法
这只是一种可能的原因。
补充:pytorch使用中遇到的问题
1. load模型参数文件时,提示torch.cuda.is_available() is False。
按照pytorch官方网页又安装了一次pytorch,而不是直接使用清华源,执行pip install torch,暂时不知道为什么。
2. 使用CrossEntropyLoss时,要求第一个参数为网络输出值,FloatTensor类型,第二个参数为目标值,LongTensor类型。
本文共计846个文字,预计阅读时间需要4分钟。
在使用交叉熵损失函数时,`target` 的形状应该与 `label` 的形状一致,或者是仅有一个维度的 `batchsize`。例如,如果 `target` 是这样的 `[batchsize, 1]`,就会出现上述错误。下面是修改后的内容尝试:
在使用交叉熵损失函数时,确保 `target` 的形状与 `label` 相匹配,或者仅包含一个 `batchsize` 维度。若 `target` 形状为 `[batchsize, 1]`,则可能出现错误。尝试使用 squeeze() 函数(`squeeze()`)解决。
在使用交叉熵损失函数的时候,target的形状应该是和label的形状一致或者是只有batchsize这一个维度的。
如果target是这样的就会出现上述的错误。
改一下试试,用squeeze()函数降低纬度,
如果不知道squeeze怎么用的,
可以参考这篇文章。pytorch下的unsqueeze和squeeze用法
这只是一种可能的原因。
补充:pytorch使用中遇到的问题
1. load模型参数文件时,提示torch.cuda.is_available() is False。
按照pytorch官方网页又安装了一次pytorch,而不是直接使用清华源,执行pip install torch,暂时不知道为什么。
2. 使用CrossEntropyLoss时,要求第一个参数为网络输出值,FloatTensor类型,第二个参数为目标值,LongTensor类型。

