Pytorch VNet 最终的 softmax 激活层用于分割。不同通道维度到标签的映射。我如何获得预测输出?

我正在尝试构建一个 V-Net。当我在训练过程中传递图像进行分割时,softmax 激活后的输出有 2 个通道(如附件图像中指定的架构),但标签和输入只有 1 个通道。我该如何转换输出,使其成为分割后的图像?我在训练时是否只需取其中一个通道作为最终输出(例如 output = output[:, 0, :, :, :]),而另一个通道作为背景?

outputs = network(inputs)batch_size = 32outputs.shape: [32, 2, 64, 128, 128]inputs.shape: [32, 1, 64, 128, 128]labels.shape: [32, 1, 64, 128, 128]

这是我的 Vnet 前向传递:

def forward(self, x):    # 初始输入转换    out = self.in_tr(x)    # 向下转换    out, residual_0 = self.down_depth0(out)    out, residual_1 = self.down_depth1(out)    out, residual_2 = self.down_depth2(out)    out, residual_3 = self.down_depth3(out)    # 底层    out = self.up_depth4(out)    # 向上转换    out = self.up_depth3(out, residual_3)            out = self.up_depth2(out, residual_2)    out = self.up_depth1(out, residual_1)    out = self.up_depth0(out, residual_0)    # 转换到2通道    out = self.final_conv(out)        # 返回 softmax     out = F.softmax(out)        return out [batch_size, 2, 64, 128, 128]

如 (https://arxiv.org/pdf/1606.04797.pdf) 中描述的 V Net 架构


回答:

那篇论文有两个输出,因为它们预测两个类别:

网络预测包括两个与原始输入数据相同分辨率的体数据,通过 softmax 层处理后,输出每个体素属于前景和背景的概率。

因此,这不是一个自编码器,你的输入不会通过模型传递回输出。他们使用一组标签来区分他们感兴趣的像素(前景)和其他(背景)。如果你想以这种方式使用 V-net,你需要更改你的数据。

这不仅仅是指定一个通道作为输出那么简单,因为这是一个分类任务而不是回归任务。你需要使用带有注释标签的数据来配合这种模型架构。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注