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

做网站的数据库万维设计

做网站的数据库,万维设计,网站服务器地址查询方法,简单的html网页制作模板免费创新点 在不显著增加复杂度的情况下,显著增加感受野。可以替代传统的卷积模块对分解出的不同频率特征进行独立的卷积处理而且可以捕获频域信息 import pywt import pywt.data import torch from torch import nn from torch.autograd import Function import torc…

创新点

  • 在不显著增加复杂度的情况下,显著增加感受野。
  • 可以替代传统的卷积模块
  • 对分解出的不同频率特征进行独立的卷积处理而且可以捕获频域信息
import pywt
import pywt.data
import torch
from torch import nn
from torch.autograd import Function
import torch.nn.functional as F# 论文:Wavelet Convolutions for Large Receptive Fields
# 论文地址:https://arxiv.org/pdf/2407.05848def create_wavelet_filter(wave, in_size, out_size, type=torch.float):w = pywt.Wavelet(wave)dec_hi = torch.tensor(w.dec_hi[::-1], dtype=type)dec_lo = torch.tensor(w.dec_lo[::-1], dtype=type)dec_filters = torch.stack([dec_lo.unsqueeze(0) * dec_lo.unsqueeze(1),dec_lo.unsqueeze(0) * dec_hi.unsqueeze(1),dec_hi.unsqueeze(0) * dec_lo.unsqueeze(1),dec_hi.unsqueeze(0) * dec_hi.unsqueeze(1)], dim=0)dec_filters = dec_filters[:, None].repeat(in_size, 1, 1, 1)rec_hi = torch.tensor(w.rec_hi[::-1], dtype=type).flip(dims=[0])rec_lo = torch.tensor(w.rec_lo[::-1], dtype=type).flip(dims=[0])rec_filters = torch.stack([rec_lo.unsqueeze(0) * rec_lo.unsqueeze(1),rec_lo.unsqueeze(0) * rec_hi.unsqueeze(1),rec_hi.unsqueeze(0) * rec_lo.unsqueeze(1),rec_hi.unsqueeze(0) * rec_hi.unsqueeze(1)], dim=0)rec_filters = rec_filters[:, None].repeat(out_size, 1, 1, 1)return dec_filters, rec_filtersdef wavelet_transform(x, filters):b, c, h, w = x.shapepad = (filters.shape[2] // 2 - 1, filters.shape[3] // 2 - 1)x = F.conv2d(x, filters, stride=2, groups=c, padding=pad)x = x.reshape(b, c, 4, h // 2, w // 2)return xdef inverse_wavelet_transform(x, filters):b, c, _, h_half, w_half = x.shapepad = (filters.shape[2] // 2 - 1, filters.shape[3] // 2 - 1)x = x.reshape(b, c * 4, h_half, w_half)x = F.conv_transpose2d(x, filters, stride=2, groups=c, padding=pad)return xdef wavelet_transform_init(filters):class WaveletTransform(Function):@staticmethoddef forward(ctx, input):with torch.no_grad():x = wavelet_transform(input, filters)return x@staticmethoddef backward(ctx, grad_output):grad = inverse_wavelet_transform(grad_output, filters)return grad, Nonereturn WaveletTransform().applydef inverse_wavelet_transform_init(filters):class InverseWaveletTransform(Function):@staticmethoddef forward(ctx, input):with torch.no_grad():x = inverse_wavelet_transform(input, filters)return x@staticmethoddef backward(ctx, grad_output):grad = wavelet_transform(grad_output, filters)return grad, Nonereturn InverseWaveletTransform().applyclass WTConv2d(nn.Module):def __init__(self, in_channels, out_channels, kernel_size=5, stride=1, bias=True, wt_levels=1, wt_type='db1'):super(WTConv2d, self).__init__()assert in_channels == out_channelsself.in_channels = in_channelsself.wt_levels = wt_levelsself.stride = strideself.dilation = 1self.wt_filter, self.iwt_filter = create_wavelet_filter(wt_type, in_channels, in_channels, torch.float)self.wt_filter = nn.Parameter(self.wt_filter, requires_grad=False)self.iwt_filter = nn.Parameter(self.iwt_filter, requires_grad=False)self.wt_function = wavelet_transform_init(self.wt_filter)self.iwt_function = inverse_wavelet_transform_init(self.iwt_filter)self.base_conv = nn.Conv2d(in_channels, in_channels, kernel_size, padding='same', stride=1, dilation=1,groups=in_channels, bias=bias)self.base_scale = _ScaleModule([1, in_channels, 1, 1])self.wavelet_convs = nn.ModuleList([nn.Conv2d(in_channels * 4, in_channels * 4, kernel_size, padding='same', stride=1, dilation=1,groups=in_channels * 4, bias=False) for _ in range(self.wt_levels)])self.wavelet_scale = nn.ModuleList([_ScaleModule([1, in_channels * 4, 1, 1], init_scale=0.1) for _ in range(self.wt_levels)])if self.stride > 1:self.stride_filter = nn.Parameter(torch.ones(in_channels, 1, 1, 1), requires_grad=False)self.do_stride = lambda x_in: F.conv2d(x_in, self.stride_filter, bias=None, stride=self.stride,groups=in_channels)else:self.do_stride = Nonedef forward(self, x):x_ll_in_levels = []x_h_in_levels = []shapes_in_levels = []curr_x_ll = xfor i in range(self.wt_levels):curr_shape = curr_x_ll.shapeshapes_in_levels.append(curr_shape)if (curr_shape[2] % 2 > 0) or (curr_shape[3] % 2 > 0):curr_pads = (0, curr_shape[3] % 2, 0, curr_shape[2] % 2)curr_x_ll = F.pad(curr_x_ll, curr_pads)curr_x = self.wt_function(curr_x_ll)curr_x_ll = curr_x[:, :, 0, :, :]shape_x = curr_x.shapecurr_x_tag = curr_x.reshape(shape_x[0], shape_x[1] * 4, shape_x[3], shape_x[4])curr_x_tag = self.wavelet_scale[i](self.wavelet_convs[i](curr_x_tag))curr_x_tag = curr_x_tag.reshape(shape_x)x_ll_in_levels.append(curr_x_tag[:, :, 0, :, :])x_h_in_levels.append(curr_x_tag[:, :, 1:4, :, :])next_x_ll = 0for i in range(self.wt_levels - 1, -1, -1):curr_x_ll = x_ll_in_levels.pop()curr_x_h = x_h_in_levels.pop()curr_shape = shapes_in_levels.pop()curr_x_ll = curr_x_ll + next_x_llcurr_x = torch.cat([curr_x_ll.unsqueeze(2), curr_x_h], dim=2)next_x_ll = self.iwt_function(curr_x)next_x_ll = next_x_ll[:, :, :curr_shape[2], :curr_shape[3]]x_tag = next_x_llassert len(x_ll_in_levels) == 0x = self.base_scale(self.base_conv(x))x = x + x_tagif self.do_stride is not None:x = self.do_stride(x)return xclass _ScaleModule(nn.Module):def __init__(self, dims, init_scale=1.0, init_bias=0):super(_ScaleModule, self).__init__()self.dims = dimsself.weight = nn.Parameter(torch.ones(*dims) * init_scale)self.bias = Nonedef forward(self, x):return torch.mul(self.weight, x)if __name__ == '__main__':block = WTConv2d(in_channels=3, out_channels=3)input = torch.rand(1, 3, 64, 64)output = block(input)print(input.size())print(output.size())
http://www.dtcms.com/a/605827.html

相关文章:

  • 马尾网站建设郑州网络推广哪家厉害
  • 【Java SE 基础学习打卡】13 Java 开发工具
  • 【文献阅读】网络复杂系统演化历史的重建
  • 编译型语言的两个步骤 | 了解编译与执行过程
  • 基于FP7153的超小封装5V/3A自行车车灯驱动方案
  • Rust入门:运算符和数据类型应用
  • 易语言DLL反编译 | 深入解析反编译技术与应用
  • 官方网站建设有限公司百度推广关键词排名在哪看
  • 有什么办法做自己的网站成都哪些地方好玩
  • 自适应导航网站模板电商网站建设技术员的工作职责
  • Prompts for Chat Models in LangChain
  • 【音视频】AI自适应均衡器的调节精度提升方法
  • vscode编译C语言 | 在VSCode中配置编译环境与常见问题解决
  • 「腾讯云NoSQL」技术之向量数据库篇:腾讯云向量数据库如何实现召回不变,成本减半?
  • Window系统,Unity编辑器中播放HEVC/H265编码的视频报错问题:WindowsVideoMedia error OxcOOdOO1a
  • 专业集团门户网站建设重庆网站备案必须到核验点
  • PotPlayer播放器下载安装教程 - 媒体观影神器
  • 仿生机器人的SLAM导航
  • Sequelize vs Prisma:现代 Node.js ORM 深度技术解析与实战指南
  • 中国关键词网站广告公司注册条件
  • 第11章、事务
  • Sass环境搭建及使用测试(windows学习环境)
  • Java数据结构:二叉树
  • RabbitMq消费延迟衰减重试实现思路
  • 欧拉22.03系统安装RabbitMQ-3.6.10
  • C语言编译器的选择与优化技巧 | 如何选择适合的C语言编译器以提高代码性能
  • 高通移动:编译成功后,用Unpacking Tool打包,再烧录
  • 文档切片(Document Chunking)
  • AEC-Q100 stress实验详解#5——PTC(功率温度循环)
  • MacOS彻底清除docker及image