【implementation】SimAM
【ICML-2021】SimAM架构能量函数
最小化能量函数的方程
最终的输出结果
\begin{aligned}
\frac{1}{e} &= \frac{(t-\hat \mu)^2}{4(\hat \sigma^2 + \lambda)} + \frac{2(\hat \sigma^2 + \lambda)}{4(\hat \sigma^2 + \lambda)} &= \frac{(t-\hat \mu)^2}{4(\hat \sigma^2 + \lambda)} + \frac {1}{2}
\end{aligned}实现1234567891011121314151617181920212223242526import torchfrom torch import nnimport torch.nn.functional as Fclass SimAM(nn.Module): def __init__(self,Lambda=0.1): """ :param Lambda: 能量函数里面的超参数 ...
【implementation】Coordinate Attention
【CVPR-21】Coordinate Attention架构
实现123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import torchfrom torch import nnimport torch.nn.functional as Fclass CoordinateAttention(nn.Module): def __init__(self,in_ch,r): """ :param in_ch: 特征图输入通道数 :param r: 特征图通道数的减少比率 """ super(CoordinateAttention, self).__init__() self.x_avg_pool = nn.AdaptiveAvgPool2d((None,1)) self.y_avg_pool ...
【implementation】ECANet
【CVPR-20】ECANet架构输入F,[N,C,H,W]
经过GAP,[N,C,H,W]→[N,C,1,1]→[N,C,1]→[N,1,C]
经过卷积,[N,1,C]→[N,1,C]→[N,C,1]→[N,C,1,1]
经过逐元素相乘,[N,C,1,1]→[N,C,H,W]
实现
123456789101112131415161718192021222324252627282930import torchfrom torch import nnclass ECANet(nn.Module): def __init__(self,in_ch,gamma=2,b=1): super(ECANet, self).__init__() self.gap = nn.AdaptiveAvgPool2d(1) self.in_ch = torch.tensor(in_ch,dtype=torch.float32) self.k = int(abs(torch.log2(self.in_ch) + b) / gamma) ...
【implementation】CBAM
【ECCV-18】CBAM架构输入特征图F(N,C,H,W)
经过CA模块转化为F’(N,C,H,W)* CA(N,C,1,1)→ (N,C,H,W)
经过SA模块转化为F’’(N,C,H,W)*SA(N,1,H,W)→(N,C,H,W)
最后残差连接
实现CA模块
1234567891011121314151617181920212223242526272829303132333435class ChannelAttentionModule(nn.Module): def __init__(self,in_ch,reduction_ratio): """ :param in_ch: 特征图输入通道数 :param reduction_ratio: 特征图通道数的减少比率 """ super(ChannelAttentionModule, self).__init__() self.max_pool = nn.AdaptiveMax ...
【implementation】SENets
[CVPR-18]SENets架构
实现12345678910111213141516171819202122232425262728293031323334353637383940414243import torchfrom torch import nnclass SENets(nn.Module): def __init__(self,in_ch,reduction_ratio): super(SENets, self).__init__() """ :param in_ch: 特征图输入通道数 :param reduction_ratio: 特征图通道数的减少比率 """ # [N,C,H,W] -> [N,C,1,1] self.Global_pooling = nn.AdaptiveAvgPool2d(1) self.fc = nn.Sequential( ...
【implementation】ddpm
Dataset-CelebA主要包括transforms数据增强、DatasetFolder加载无分类数据
transforms数据增强123456transforms = transforms.Compose([ transforms.Resize(64), transforms.CenterCrop(64), transforms.ToTensor(), transforms.Normalize(mean=(0.5, 0.5, 0.5), std=(0.5, 0.5, 0.5))])
DatasetFolder加载无分类数据1234567# 数据加载(无分类数据)celeba_set = DatasetFolder( root=win_root, loader=loader, extensions="jpg", transform= transforms)
完整代码12345678910111213141516171819202122232425from torchvision.datasets import Da ...
Docker部署后端及配置集群
Docker部署后端及配置集群1、后端项目打包1mvn clean install -Dmaven.test.skip=true
2、安装java镜像1docker pull openjdk
3、创建并启动java容器1234567891011#创建数据卷,上传JAR文件docker volume create j1#启动容器docker run -it -d --name j1 -v j1:/home/soft --net=host openjdk#进入j1容器docker exec -it j1 bash#启动Java项目nohup java -jar /home/soft/你的jar包名字.jar >> home/soft/java.log 2>&1 &#查看日志tail -100f /home/soft/java.log
.jmhmxyamfhjq{zoom:50%;}
12345678910111213#同理部署两个后端节点,记得修改好配置文件端口号docker volume create j2docker run -it -d --name ...
Docker配置RocketMQ
Docker配置RocketMQ1、拉取RocketMQ镜像
1docker pull foxiswho/rocketmq:broker-4.5.1
2、启动注册中心Nameserver
1docker run -d -p 9876:9876 --name rmqserver foxiswho/rocketmq:server-4.5.1
3、创建RocketMQ配置文件
.gnuinscepddr{zoom: 50%;}
12//或者本地创建后上传到云主机上,路径可以根据自己设定vim /usr/local/roketmq/conf/broker.conf
123456789brokerIP1 = 填写你的云主机ipbrokerClusterName = DefaultClusterbrokerName = broker-abrokerId = 0deleteWhen = 04fileReservedTime = 48brokerRole = ASYNC_MASTERflushDiskType = ASYNC_FLUSHenablePropertyFilter=true
4、启动Roc ...
Docker配置MySQL集群
Docker配置MySQL集群1、安装MySQL集群PXC镜像1docker pull percona/percona-xtradb-cluster:5.7
2、创建docker内部网段1docker network create pxc-network
3、创建数据卷123456//对应五节点集群方案docker volume create v1docker volume create v2docker volume create v3docker volume create v4docker volume create v5
4、创建容器并运行1234567891011//替换自己的mysql密码docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你设定的mysql密码 -e CLUSTER_NAME=cluster1 -v v1:/var/lib/mysql --name=node1 --net=pxc-network percona/percona-xtradb-cluster:5.7//主节点启动后经测试链接正常后,再创建其以下 ...
如何将一个标量转换为与目标张量形状相同
背景
参考别人的代码中,它直接将一个标量进行reshape,导致我报错了,但它可以正常运行,目前还不知道是什么原因,后面再看看。在扩散模型的Forward process中,可以根据以下公式计算得到t时刻的带噪图像xt,其中αt是表示噪声比例的一个系数,是一个标量。在Pytorch中一个标量不能直接和一个不同维度的张量进行广播操作,所以需要将一个标量转换为与目标张量形状相同。
x_t = \sqrt{ \bar \alpha_{t}}x_0 + \sqrt{1-\bar \alpha_{t}}\epsilon方法
假设x0维度- [N,C,H,W] - [8,3,64,64] , 而αt维度为零维 , 所以想到了以下两种方式
1、先unsqueeze,再repeat,最后循环unsqueeze
12345sqrt_alpha_t_cumprod = self.sqrt_alpha_cumprod[t].unsqueeze(-1).repeat(batch_size)sqrt_one_minus_alpha_t_cumprod = self.sqrt_one_minus_alpha_ ...