我知道这个问题已经有了关于如何可视化分割结果的明确答案。我的问题是,如果我在训练后使用 CrossEntropyLoss 作为损失函数。预测的分类(分割)结果不代表类别 0,1,2。它表示在 cs231n 斯坦福类中讲述的非标准化对数概率。所以如果我想可视化分割结果,我应该使用
- nn.LogSoftmax()
获取课程然后将它们绘制出来?或者我应该在输出的第一维上做一个最大值函数。
例如,如果预测输出大小为 3x1024x1024,我如何可视化分割结果?
先感谢您。
我知道这个问题已经有了关于如何可视化分割结果的明确答案。我的问题是,如果我在训练后使用 CrossEntropyLoss 作为损失函数。预测的分类(分割)结果不代表类别 0,1,2。它表示在 cs231n 斯坦福类中讲述的非标准化对数概率。所以如果我想可视化分割结果,我应该使用
- nn.LogSoftmax()
获取课程然后将它们绘制出来?或者我应该在输出的第一维上做一个最大值函数。
例如,如果预测输出大小为 3x1024x1024,我如何可视化分割结果?
先感谢您。
在任何一种情况下(使用或不使用nn.LogSoftMax())您都应该执行一些 argmax 操作以从概率中获取类。
这样做的原因是概率的顺序在之后总是保持不变,nn.LogSoftmax()因为该操作挤压 [0, 1] 区间中的数字,但保持顺序(此操作之前的最大一个也将保持 [0 , 1] 间隔,依此类推...)。
因此,出于确定班级的目的,您是否这样做nn.LogSoftmax()并不重要。
nn.LogSoftmax()仅在训练过程中才需要计算损失并反向传播该信息以更新网络的参数。