【问题标题】:How to get the encoder part of a neural network in PyTorch?如何在 PyTorch 中获取神经网络的编码器部分?
【发布时间】:2021-07-29 20:32:03
【问题描述】:

我想应用迁移学习(使用来自预训练的 UNet 或 ResNet 编码器的权重启动我的自定义网络的编码器)。所以问题是: 给定 Pytorch 中的 UNet 或 ResNet 实例,如何在 PyTorch 中提取 ResNet 或 UNet 的编码器部分?

This blog 展示了一种方法,但它首先需要我拥有 UNet 或 ResNet 类,这对我来说不实用。因为UNet或ResNet的实例是通过net = get_resnet(depth=34)这样的函数获得的,所以我只能得到UNet或ResNet的实例,但无法得到它们的类。

【问题讨论】:

    标签: python deep-learning pytorch resnet


    【解决方案1】:

    对于 ResNet,最后一层只是 self.fc,因此如果您实例化一个 ResNet 模型,您可以将 self.fc 重新定义为您喜欢的分类任务,保持模型的其余部分不变,包括预训练的权重(如果适用)。

    对于 UNet,这有点棘手,因为解码器由上采样层和输出层组成,但同样可以替换 self.up1self.up2self.up3self.up4self.outc.

    确保在加载权重后更换层。

    【讨论】:

      猜你喜欢
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 2021-03-11
      • 2019-03-08
      • 1970-01-01
      • 2016-08-14
      • 2019-09-16
      相关资源
      最近更新 更多