【快捷测试模型是否可以跑通】设置一张图片的张量形式,送入自己写的模型进行测试
文章目录
- 1.
1.
import torch.nn as nn
import torch
from einops import rearrange, repeat
from einops.layers.torch import Rearrange
import torch.nn.functional as Fclass PreNorm(nn.Module):def __init__(self, dim, fn):super().__init__()self.norm = nn.LayerNorm(dim)self.fn = fndef forward(self, x, **kwargs):return self.fn(self.norm(x), **kwargs)class FeedForward(nn.Module):def __init__(self, dim, hidden_dim, dropout=0.):super().__init__()self.net = nn.Sequential(nn.Linear(dim, hidden_dim),nn.GELU(),nn.Dropout(dropout),nn.Linear(hidden_dim, dim),nn.Dropout(dropout))def forward(self, x):return self.net(x)class PPM(nn.Module):def __init__(self, pooling_sizes=(1, 3, 5)):super().__init__()self.layer = nn.ModuleList([nn.AdaptiveAvgPool2d(output_size=(size, size)) for size in pooling_sizes])def forward(self, feat):b, c, h, w = feat.shapeoutput = [layer(feat).view(b, c, -1) for layer in self.layer]output = torch.cat(output, dim=-1)return output# Efficient self attention
class ESA_layer(nn.Module):def __init__(self, dim, heads=8, dim_head=64, dropout=0.):super().__init__()inner_dim = dim_head * headsproject_out = not (heads == 1 and dim_head == dim)self.heads = headsself.scale = dim_head ** -0.5self.attend = nn.Softmax(dim=-1)self.to_qkv = nn.Conv2d(dim, inner_dim * 3, kernel_size=1, stride=1, padding=0, bias=False)self.ppm = PPM(pooling_sizes=(1, 3, 5))self.to_out = nn.Sequential(nn.Linear(inner_dim, dim),nn.Dropout(dropout)) if project_out else nn.Identity()def forward(self, x):# input x (b, c, h, w)b, c, h, w = x.shapeq, k, v = self.to_qkv(x).chunk(3, dim=1) # q/k/v shape: (b, inner_dim, h, w)q = rearrange(q, 'b (head d) h w -> b head (h w) d', head=self.heads) # q shape: (b, head, n_q, d)k, v = self.ppm(k), self.ppm(v) # k/v shape: (b, inner_dim, n_kv)k = rearrange(k, 'b (head d) n -> b head n d', head=self.heads) # k shape: (b, head, n_kv, d)v = rearrange(v, 'b (head d) n -> b head n d', head=self.heads) # v shape: (b, head, n_kv, d)dots = torch.matmul(q, k.transpose(-1, -2)) * self.scale # shape: (b, head, n_q, n_kv)attn = self.attend(dots)out = torch.matmul(attn, v) # shape: (b, head, n_q, d)out = rearrange(out, 'b head n d -> b n (head d)')return self.to_out(out)class ESA_blcok(nn.Module):def __init__(self, dim, heads=8, dim_head=64, mlp_dim=512, dropout=0.):super().__init__()self.ESAlayer = ESA_layer(dim, heads=heads, dim_head=dim_head, dropout=dropout)self.ff = PreNorm(dim, FeedForward(dim, mlp_dim, dropout=dropout))def forward(self, x):b, c, h, w = x.shapeout = rearrange(x, 'b c h w -> b (h w) c')out = self.ESAlayer(x) + outout = self.ff(out) + outout = rearrange(out, 'b (h w) c -> b c h w', h=h)return out+x# return outdef MaskAveragePooling(x, mask):mask = torch.sigmoid(mask)b, c, h, w = x.shapeeps = 0.0005x_mask = x * maskh, w = x.shape[2], x.shape[3]area = F.avg_pool2d(mask, (h, w)) * h * w + epsx_feat = F.avg_pool2d(x_mask, (h, w)) * h * w / areax_feat = x_feat.view(b, c, -1)return x_feat# Lesion-aware Cross Attention
class LCA_layer(nn.Module):def __init__(self, dim, heads=8, dim_head=64, dropout=0.):super().__init__()inner_dim = dim_head * headsproject_out = not (heads == 1 and dim_head == dim)self.heads = headsself.scale = dim_head ** -0.5self.attend = nn.Softmax(dim=-1)self.to_qkv = nn.Conv2d(dim, inner_dim * 3, kernel_size=1, stride=1, padding=0, bias=False)self.to_out = nn.Sequential(nn.Linear(inner_dim, dim),nn.Dropout(dropout)) if project_out else nn.Identity()def forward(self, x, mask):# input x (b, c, h, w)b, c, h, w = x.shapeq, k, v = self.to_qkv(x).chunk(3, dim=1) # q/k/v shape: (b, inner_dim, h, w)q = rearrange(q, 'b (head d) h w -> b head (h w) d', head=self.heads) # q shape: (b, head, n_q, d)k, v = MaskAveragePooling(k, mask), MaskAveragePooling(v, mask) # k/v shape: (b, inner_dim, 1)k = rearrange(k, 'b (head d) n -> b head n d', head=self.heads) # k shape: (b, head, 1, d)v = rearrange(v, 'b (head d) n -> b head n d', head=self.heads) # v shape: (b, head, 1, d)dots = torch.matmul(q, k.transpose(-1, -2)) * self.scale # shape: (b, head, n_q, n_kv)attn = self.attend(dots)out = torch.matmul(attn, v) # shape: (b, head, n_q, d)out = rearrange(out, 'b head n d -> b n (head d)')return self.to_out(out)class LCA_blcok(nn.Module):def __init__(self, dim, heads=8, dim_head=64, mlp_dim=512, dropout=0.):super().__init__()self.LCAlayer = LCA_layer(dim, heads=heads, dim_head=dim_head, dropout=dropout)self.ff = PreNorm(dim, FeedForward(dim, mlp_dim, dropout=dropout))def forward(self, x, mask):b, c, h, w = x.shapeout = rearrange(x, 'b c h w -> b (h w) c')out = self.LCAlayer(x, mask) + outout = self.ff(out) + outout = rearrange(out, 'b (h w) c -> b c h w', h=h)return out# test
if __name__ == '__main__':x = torch.rand((4, 3, 320, 320))mask = torch.rand(4, 1, 320, 320)lca = LCA_blcok(dim=3)esa = ESA_blcok(dim=3)print(lca(x, mask).shape)print(esa(x).shape)相关文章:
【快捷测试模型是否可以跑通】设置一张图片的张量形式,送入自己写的模型进行测试
文章目录 1. 1. import torch.nn as nn import torch from einops import rearrange, repeat from einops.layers.torch import Rearrange import torch.nn.functional as Fclass PreNorm(nn.Module):def __init__(self, dim, fn):super().__init__()self.norm nn.LayerNorm(…...
软考系列(系统架构师)- 2019年系统架构师软考案例分析考点
试题一 软件架构(架构风格、质量属性) 【问题1】(13分) 针对用户级别与折扣规则管理功能的架构设计问题,李工建议采用面向对象的架构风格,而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…...
安防视频监控系统EasyCVR视频汇聚存储平台定制化开发:新增kafka配置
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…...
C++设计模式_08_Factory Method工厂方法模式
文章目录 1. “对象创建模式”模式1.1 典型模式 2. 动机(Motivation)3. 代码演示Factory Method工厂方法模式3.1 常规方法3.2 面向接口的编程3.2.1 FileSplitter1.cpp3.2.2 MainForm1.cpp 3.3 Factory Method工厂方法3.3.1 ISplitterFactory.cpp3.3.2 Ma…...
【TensorFlow1.X】系列学习笔记【基础一】
【TensorFlow1.X】系列学习笔记【基础一】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【基础一】前言线性回归非线性回归逻辑回归总结 前言 本篇博主将用最简洁的代码由浅入…...
Linux 基础操作手记三(内存篇)
Linux 基础操作手记三 释放内存虚拟机彻底无网络测试网速设置虚拟内存交换空间未使用虚拟机设置虚拟内存无法开机问题GParted - 分配内存系统盘扩容自己 释放内存 sync && echo 3 > /proc/sys/vm/drop_caches 虚拟机彻底无网络 还原默认设置,静静的等待…...
NodeJS的初使用,以及引入第三方插件和安装淘宝镜像的教程
NodeJs 命令 npm init -y 生成package.json文件npm i jquery --save–dev 开发依赖(jQuery后面还可以跟模块,可以有多个)npm i jquery --save 生产依赖npm i jquery --D 开发依赖npm uninstall jquery 卸载删除npm i 把删掉的模块,全部重新加载回来 1.介绍 1.什么是NodeJs?…...
Java读取文件的N种方法
1.概述 在这篇文章里, 我们将探索不同的方式从文件中读取数据。 首先, 学习通过标准的的Java类,从classpath、URL或者Jar中加载文件。 然后,学习通用BufferedReader, Scanner, StreamTokenizer, DataInputStream, SequenceInput…...
子类的构造与析构过程
一、简介 父类,也称基类,其构造方法和析构方法不能被继承; 子类,也称派生类,继承父类的方法和属性,但要加入新的构造和析构函数。 二、构造与析构过程 构造:先调用父类——>再调用子类 析构&…...
位运算相关笔记
位运算 Part 1:基础 左移:左移一位,相当于某数乘以 2 2 2。左移 x x x位,相当于该数乘以 2 x 2^x 2x。 右移:右移一位,相当于某数除以 2 2 2。右移 x x x位,相当于该数除以 2 x 2^x 2x。 与运算&…...
uniapp 安装 u-view 组件库
u-view 组件库安装教程:https://uviewui.com/components/install.html 注:以下使用 HBuilderx 安装 u-view 2.0 版本,不适用于其它版本。 1.安装 u-view 组件库 2、注册并登录 HBuilderx 账号,点击下载 u-view 组件库。 3、点击…...
Go 语言的成功案例:谁在使用 Go?
Go 语言,也被称为 Golang,是一门由Google开发的开源编程语言。自从2009年首次亮相以来,它在编程社区中崭露头角,并吸引了越来越多的开发者和组织。Go 以其高效的并发性、出色的性能和简单易懂的语法而闻名。在本文中,我…...
UG\NX二次开发 实时查看 NX 日志文件
文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 a18037198459 订阅本专栏,非常感谢。 简介 实时查看 NX 日志文件,有助于分析保存时间等。打开WindowsPowerShell并实时获取日志文件内容的小功能。 效果 代…...
ZooKeeper+HBase分布式集群环境搭建
安装版本:hadoop-2.10.1、zookeeper-3.4.12、hbase-2.3.1 一、zookeeper集群搭建与配置 1.下载zookeeper安装包 2.解压移动zookeeper 3.修改配置文件(创建文件夹) 4.进入conf/ 5.修改zoo.cfg文件 6.进入/usr/local/zookeeper-3.4.12/zkdata…...
喜讯!持安科技入选2023年北京市知识产权试点单位!
近日,北京市知识产权局发布了“2023年度北京市知识产权试点示范单位及2020年度北京市知识产权试点示范单位复审通过名单”名单。 经过严格的初审、形式审核和专家评审,北京持安科技有限公司入选“2023年北京市知识产权试点单位”。 北京市知识产权试点示…...
笙默考试管理系统-MyExamTest----codemirror(39)
笙默考试管理系统-MyExamTest----codemirror(39) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试…...
抛砖引玉:Redis 与 接口自动化测试框架的结合
接口自动化测试已成为保证软件质量和稳定性的重要手段。而Redis作为一个高性能的缓存数据库,具备快速读写、多种数据结构等特点,为接口自动化测试提供了强大的支持。勇哥这里粗略介绍如何结合Python操作Redis,并将其应用于接口自动化测试框架…...
网站如何才能不被黑,如何做好网络安全
当企业网站受到攻击时,首页文件可能被篡改,百度快照也可能被劫持并重定向到其他网站。首要任务是加强网站的安全防护。然而,许多企业缺乏建立完善的网站安全防护体系的知识。因此,需要专业的网站安全公司来提供相应的保护措施。今…...
人脸写真FaceChain风格写真的试玩(二)
接着上一篇【人脸写真FaceChain的简单部署记录(一)】来试玩一下。 1 无限风格写真 参考:让你拥有专属且万能的AI摄影师AI修图师——FaceChain迎来最大版本更新 1.1 人物形象训练 这里的步骤比较简单,就是选择照片,然…...
PHP 变量
变量 变量的声明、使用、释放 变量定义 形式 $ 变量名;严格区分大小写 $name; $Name; $NAME //三个变量不是同一个变量字母、数字、下划线组成,不能以数字开头,不能包含其他字符(空白字符、特殊字符) 驼峰式命名法、下划线式命名法 $first_name; $fi…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
