当前位置: 首页 > article >正文

nn.Upsample

nn.Upsample 是 PyTorch 中的一个模块,用于对张量进行上采样(增加空间分辨率)。它常用于图像生成、分割等需要调整张量尺寸的任务中。模块支持多种插值模式来改变分辨率。

基本用法

torch.nn.Upsample(size=None, scale_factor=None, mode='nearest', align_corners=None)

参数说明

  • size (tuple[int]int, 可选):
    目标输出尺寸,指定输出张量的高度和宽度。例如,size=(10, 10) 将输出张量调整为 10x10 的大小。如果指定了 size,则会忽略 scale_factor

  • scale_factor (floattuple[float], 可选):
    空间维度的倍率。例如,scale_factor=2 表示将输入张量的高度和宽度扩大两倍。

  • mode (str, 默认值='nearest'):
    插值模式,可选值包括:

    • 'nearest': 最近邻插值。
    • 'linear': 一维线性插值(用于 1D 输入)。
    • 'bilinear': 双线性插值(用于 2D 输入)。
    • 'bicubic': 双三次插值(用于 2D 输入)。
    • 'trilinear': 三线性插值(用于 3D 输入)。
    • 'area': 面积插值(仅用于下采样)。
  • align_corners (bool, 可选):

    • 'linear''bilinear''bicubic''trilinear' 模式下有效。
    • 如果为 True,输入和输出张量的角像素会严格对齐。
    • 如果为 False(默认值),插值以像素的中心为基准,通常能带来更准确的结果。

示例用法

使用 scale_factor

import torch
import torch.nn as nn

# 输入张量:[batch, channels, height, width]
input_tensor = torch.randn(1, 3, 4, 4)

# 上采样倍率为 2
upsample = nn.Upsample(scale_factor=2, mode='bilinear', align_corners=True)
output_tensor = upsample(input_tensor)

print(f"输入尺寸: {input_tensor.shape}")  # [1, 3, 4, 4]
print(f"输出尺寸: {output_tensor.shape}")  # [1, 3, 8, 8]

使用 size

# 调整到固定大小
upsample = nn.Upsample(size=(10, 10), mode='nearest')
output_tensor = upsample(input_tensor)

print(f"输出尺寸: {output_tensor.shape}")  # [1, 3, 10, 10]

注意事项

  • Upsample 是 PyTorch 中 F.interpolate 函数的简单封装。

  • 虽然 Upsample 使用方便,但推荐直接使用 F.interpolate,因为它提供更多的灵活性。例如:

import torch.nn.functional as F

output_tensor = F.interpolate(input_tensor, scale_factor=2, mode='bilinear', align_corners=True)
  • 上采样可能会引入伪影。选择合适的 mode,必要时可进行额外的后处理来减轻伪影影响。

http://www.kler.cn/a/413103.html

相关文章:

  • C中指针在64位操作系统下为什么是4而不是8
  • 从零开始:NetBox 4.1 Docker 部署和升级
  • linux模拟HID USB设备及wireshark USB抓包配置
  • 【C++】vector的使用
  • GESP C++等级考试 二级真题(2024年9月)
  • java——SpringBoot中常用注解及其底层原理
  • linuxCNC(三)ini配置文件说明
  • 解决 S3 文件复制时的 “can‘t start new thread“ 错误
  • CListCtrl::InsertItem和临界区导致程序卡死
  • C++-qt经验
  • Android 桌面窗口新功能推进,聊一聊 Android 桌面化的未来
  • Unity 中 多种资源加载方式的优缺点
  • MySQL(8)【聚合函数 | group by分组查询】
  • 衡山派D133EBS 开发环境安装及SDK编译烧写镜像烧录
  • Scala中字符串
  • 选修课(Java Python JS C++ C )
  • 【汇编语言】call 和 ret 指令(一) —— 探讨汇编中的ret和retf指令以及call指令及其多种转移方式
  • 搜索引擎中广泛使用的文档排序算法——BM25(Best Matching 25)
  • 【从零开始的LeetCode-算法】3206. 交替组 I
  • 《Opencv》基础操作<1>
  • 天通物联网应用:首创渐进式图片压缩算法,实现1000倍高效图传,可一键拨打天通电话
  • C#开发合集
  • CentOS8.5.2111(8)LAMP部署综合实验
  • Linux之网络基础
  • 图片预览 图片上传到服务器
  • FFmpeg 简介与编译