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

12.13 深度学习-空间注意力仿射变换STN

# 就是对图像做一个仿射 变换 仿射变换的参数要去学习 直接用nn.Linear()就行

# 仿射变换的原理就是 线性变换

# 这个仿射变换要加在模型最开始的地方

import torch

import torch.nn as nn

import torch.nn.functional as F


 

class STN(nn.Module):

    def __init__(self, c, h, w):

        super(STN, self).__init__()

        # 定义线性变换 要输出 1,6的矩阵 然后变为2,3的 然后 这个2,3的矩阵 通过affine_grid变为一个 仿射变换矩阵 然后 通过grid_sample 把 数据 和仿射变换矩阵  完成仿射变换

        # 两个线性层是根据图来的

        self.fc = nn.Sequential(

            nn.Linear(in_features=c * h * w, out_features=32),

            nn.Tanh(),

            nn.Linear(in_features=32, out_features=6),

            nn.Tanh(),

        )

    def forward(self, x):

        batch_size, c, h, w = x.size()

        # 2行3列的矩阵

        theta = self.fc(x.view(batch_size, -1)).view(batch_size, 2, 3)

        # 仿射变换矩阵

        grid = F.affine_grid(

            theta, torch.Size((batch_size, c, h, w)), align_corners=False

        )

        # 开始采样

        sample = F.grid_sample(x, grid, align_corners=False)

        return sample


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

相关文章:

  • STM32标准库移植RT-Thread nano
  • 论文阅读(二):理解概率图模型的两个要点:关于推理和学习的知识
  • 【每日一A】2015NOIP真题 (二分+贪心) python
  • PostgreSQL 约束
  • 本地Harbor仓库搭建流程
  • 数据分析系列--③RapidMiner算子说明及数据预处理
  • 使用Vue.js构建待办事项应用:从零到上线
  • Webpack是什么?
  • 《Django 5 By Example》阅读笔记:p543-p550
  • LeetCode刷题day26——动态规划
  • 秒杀业务中的库存扣减为什么不加分布式锁?
  • C# 趋势图:洞察其发展轨迹与未来走向
  • 力扣题目解析--两两交换链表中的节点
  • Linux驱动开发(14):PWM子系统–pwm波形输出实验
  • 【Prompt Engineering】3.文本概括
  • leetcode45.跳跃游戏II
  • windows C#-扩展方式的常见使用模式
  • Visual Studio 2022 安装和管理 GitHub Copilot
  • 【计算机网络】期末考试预习复习|中
  • 前端(组件间传参)
  • 柚坛工具箱Uotan Toolbox适配鸿蒙,刷机体验再升级
  • sylar:日志管理
  • 力扣hot100——子串
  • Spark3.2.0集群部署ON YARN
  • Electron-Vue 框架的构成拆解 动态 Webpcak 5 打包
  • 2024三掌柜赠书活动第三十六期:深度学习高手笔记系列