即插即用的多尺度特征提取模块及代码小结

  • Inception Module
  • SPP
  • PPM
  • ASPP
  • GPM
  • Big-Little Module(BLM)
  • PAFEM
  • FoldConv_ASPP

现在很多的网络都有多尺度特征提取模块来提升网络性能,这里简单总结一下那些即插即用的小模块。

禁止抄袭或转载!!!

Inception Module

最早的应该算是在ILSVRC2014比赛分类项目获得第一名的GoogLeNet(Incepetion V1),该网络设计了Inception module
在这里插入图片描述
后来出现了很多进化版本:Incepetion V1-V3、Inception-v4,Inception-ResNet

SPP

SPP:何恺明ECCV 2014提出Spatial Pyramid Pooling(空间金字塔池化结构),用多个size的池化层来提取特征。
在这里插入图片描述

class SPP(nn.Module):# Spatial Pyramid Pooling (SPP) layer https://arxiv.org/abs/1406.4729def __init__(self, c1, c2, k=(5, 9, 13)):super().__init__()c_ = c1 // 2  # hidden channelsself.cv1 = Conv(c1, c_, 1, 1)self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1)self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2) for x in k])def forward(self, x):x = self.cv1(x)with warnings.catch_warnings():warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warningreturn self.cv2(torch.cat([x] + [m(x) for m in self.m], 1))

还有一种等价的形式,利用小尺度的多次池化,等价得到大尺度的池化(类似于VGG多个小卷积替换大卷积层):

class SPPF(nn.Module):# Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocherdef __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))super().__init__()c_ = c1 // 2  # hidden channelsself.cv1 = Conv(c1, c_, 1, 1)self.cv2 = Conv(c_ * 4, c2, 1, 1)self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)def forward(self, x):x = self.cv1(x)with warnings.catch_warnings():warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warningy1 = self.m(x)y2 = self.m(y1)return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

PPM

CVPR2017 Pyramid Scene Parsing Network
在这里插入图片描述
该模块融合了4种不同金字塔尺度的特征,第一行红色是最粗糙的特征–全局池化生成单个bin输出,后面三行是不同尺度的池化特征。为了保证全局特征的权重,如果金字塔共有N个级别,则在每个级别后使用1×1的卷积将对于级别通道降为原本的1/N。再通过双线性插值获得未池化前的图像大小,最终concat到一起。金字塔等级的池化核大小是可以设定的,这与送到金字塔的输入有关。论文中使用的4个等级,核大小分别为1×1,2×2,3×3,6×6。

class PPM(nn.Module): # pspnetdef __init__(self, down_dim):super(PPM, self).__init__()self.down_conv = nn.Sequential(nn.Conv2d(2048,down_dim , 3,padding=1),nn.BatchNorm2d(down_dim),nn.PReLU())self.conv1 = nn.Sequential(nn.AdaptiveAvgPool2d(output_size=(1, 1)),nn.Conv2d(down_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv2 = nn.Sequential(nn.AdaptiveAvgPool2d(output_size=(2, 2)), nn.Conv2d(down_dim, down_dim, kernel_size=1),nn.BatchNorm2d(down_dim), nn.PReLU())self.conv3 = nn.Sequential(nn.AdaptiveAvgPool2d(output_size=(3, 3)),nn.Conv2d(down_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv4 = nn.Sequential(nn.AdaptiveAvgPool2d(output_size=(6, 6)), nn.Conv2d(down_dim, down_dim, kernel_size=1),nn.BatchNorm2d(down_dim), nn.PReLU())self.fuse = nn.Sequential(nn.Conv2d(4 * down_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())def forward(self, x):x = self.down_conv(x)conv1 = self.conv1(x)conv2 = self.conv2(x)conv3 = self.conv3(x)conv4 = self.conv4(x)conv1_up = F.upsample(conv1, size=x.size()[2:], mode='bilinear')conv2_up = F.upsample(conv2, size=x.size()[2:], mode='bilinear')conv3_up = F.upsample(conv3, size=x.size()[2:], mode='bilinear')conv4_up = F.upsample(conv4, size=x.size()[2:], mode='bilinear')return self.fuse(torch.cat((conv1_up, conv2_up, conv3_up, conv4_up), 1))

ASPP

TPAMI2017 Deeplabv2,核心就是并行使用多个空洞卷积。空洞卷积是是为了解决输出图像的size要求和输入图像的size一致而需要upsample,但由于使用pooling操作来增大感受野同时降低分辨率,导致upsample无法还原由于pooling导致的一些细节信息的损失的问题而提出的。为了减小这种损失,自然需要移除pooling层,因此空洞卷积应运而生。
在这里插入图片描述

class ASPP(nn.Module): # deeplabdef __init__(self, dim,in_dim):super(ASPP, self).__init__()self.down_conv = nn.Sequential(nn.Conv2d(dim,in_dim , 3,padding=1),nn.BatchNorm2d(in_dim),nn.PReLU())down_dim = in_dim // 2self.conv1 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv2 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=3, dilation=2, padding=2), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv3 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=3, dilation=4, padding=4), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv4 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=3, dilation=6, padding=6), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv5 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=1),nn.BatchNorm2d(down_dim),  nn.PReLU())self.fuse = nn.Sequential(nn.Conv2d(5 * down_dim, in_dim, kernel_size=1), nn.BatchNorm2d(in_dim), nn.PReLU())def forward(self, x):x = self.down_conv(x)conv1 = self.conv1(x)conv2 = self.conv2(x)conv3 = self.conv3(x)conv4 = self.conv4(x)conv5 = F.upsample(self.conv5(F.adaptive_avg_pool2d(x, 1)), size=x.size()[2:], mode='bilinear')return self.fuse(torch.cat((conv1, conv2, conv3,conv4, conv5), 1))

GPM

CVPR2019 AFNet: Attentive Feedback Network for Boundary-aware Salient Object Detection
在这里插入图片描述

充分利用局部和全局信息。从图中可以看出来,这里考虑了局部的邻居。通过这种方式,可以同时保证局部模式和全局信息。最终整个模块使用了多个尺度的划分,包括n=2/4/7,也就是划分成2x2/4x4/7x7三个不同的分支,进行堆叠重组后进行kgxkg的卷积,最终使用一个3x3卷积处理恢复后的特征。

class GPM(nn.Module): # cvpr19 AFNetdef __init__(self, in_dim):super(GPM, self).__init__()down_dim = 512n1, n2, n3 = 2, 4, 6self.conv1 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv2 = nn.Sequential(nn.Conv2d(down_dim * n1 * n1, down_dim * n1 * n1, kernel_size=3, padding=1),nn.BatchNorm2d(down_dim * n1 * n1), nn.PReLU())self.conv3 = nn.Sequential(nn.Conv2d(down_dim * n2 * n2, down_dim * n2 * n2, kernel_size=3, padding=1),nn.BatchNorm2d(down_dim * n2 * n2), nn.PReLU())self.conv4 = nn.Sequential(nn.Conv2d(down_dim * n3 * n3, down_dim * n3 * n3, kernel_size=3, padding=1),nn.BatchNorm2d(down_dim * n3 * n3), nn.PReLU())self.fuse = nn.Sequential(nn.Conv2d(3 * down_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())def forward(self, x):conv1 = self.conv1(x)###########################################################################gm_2_a = torch.chunk(conv1, 2, 2)c = []for i in range(len(gm_2_a)):b = torch.chunk(gm_2_a[i], 2, 3)c.append(torch.cat((b[0], b[1]), 1))gm1 = torch.cat((c[0], c[1]), 1)gm1 = self.conv2(gm1)gm1 = torch.chunk(gm1, 2 * 2, 1)d = []for i in range(2):d.append(torch.cat((gm1[2 * i], gm1[2 * i + 1]), 3))gm1 = torch.cat((d[0], d[1]), 2)###########################################################################gm_4_a = torch.chunk(conv1, 4, 2)e = []for i in range(len(gm_4_a)):f = torch.chunk(gm_4_a[i], 4, 3)e.append(torch.cat((f[0], f[1], f[2], f[3]), 1))gm2 = torch.cat((e[0], e[1], e[2], e[3]), 1)gm2 = self.conv3(gm2)gm2 = torch.chunk(gm2, 4 * 4, 1)g = []for i in range(4):g.append(torch.cat((gm2[4 * i], gm2[4 * i + 1], gm2[4 * i + 2], gm2[4 * i + 3]), 3))gm2 = torch.cat((g[0], g[1], g[2], g[3]), 2)###########################################################################gm_6_a = torch.chunk(conv1, 6, 2)h = []for i in range(len(gm_6_a)):k = torch.chunk(gm_6_a[i], 6, 3)h.append(torch.cat((k[0], k[1], k[2], k[3], k[4], k[5]), 1))gm3 = torch.cat((h[0], h[1], h[2], h[3], h[4], h[5]), 1)gm3 = self.conv4(gm3)gm3 = torch.chunk(gm3, 6 * 6, 1)j = []for i in range(6):j.append(torch.cat((gm3[6 * i], gm3[6 * i + 1], gm3[6 * i + 2], gm3[6 * i + 3], gm3[6 * i + 4], gm3[6 * i + 5]),3))gm3 = torch.cat((j[0], j[1], j[2], j[3], j[4], j[5]), 2)###########################################################################return self.fuse(torch.cat((gm1, gm2, gm3), 1))

Big-Little Module(BLM)

ICLR2019 《Big-Little Net: An Efficient Multi-Scale Feature Representation for Visual and Speech Recognition》

在这里插入图片描述
对于分辨率大的分支,使用更少的卷积通道,对于分辨率小的分支,使用更多的卷积通道,这样的方案能够更加充分地使用通道信息。分支融合前,低分辨率的特征图通过双线性插值上采样到更高分辨率的空间大小,高分辨率的特征图通过一个1x1卷积将通道数增加。

PAFEM

Pyramidally Attended Feature Extraction(PAFE)
在这里插入图片描述

class PAFEM(nn.Module):def __init__(self, dim,in_dim):super(PAFEM, self).__init__()self.down_conv = nn.Sequential(nn.Conv2d(dim,in_dim , 3,padding=1),nn.BatchNorm2d(in_dim),nn.PReLU())down_dim = in_dim // 2self.conv1 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv2 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=3, dilation=2, padding=2), nn.BatchNorm2d(down_dim), nn.PReLU())self.query_conv2 = Conv2d(in_channels=down_dim, out_channels=down_dim//8, kernel_size=1)self.key_conv2 = Conv2d(in_channels=down_dim, out_channels=down_dim//8, kernel_size=1)self.value_conv2 = Conv2d(in_channels=down_dim, out_channels=down_dim, kernel_size=1)self.gamma2 = Parameter(torch.zeros(1))self.conv3 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=3, dilation=4, padding=4), nn.BatchNorm2d(down_dim), nn.PReLU())self.query_conv3 = Conv2d(in_channels=down_dim, out_channels=down_dim//8, kernel_size=1)self.key_conv3 = Conv2d(in_channels=down_dim, out_channels=down_dim//8, kernel_size=1)self.value_conv3 = Conv2d(in_channels=down_dim, out_channels=down_dim, kernel_size=1)self.gamma3 = Parameter(torch.zeros(1))self.conv4 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=3, dilation=6, padding=6), nn.BatchNorm2d(down_dim), nn.PReLU())self.query_conv4 = Conv2d(in_channels=down_dim, out_channels=down_dim//8, kernel_size=1)self.key_conv4 = Conv2d(in_channels=down_dim, out_channels=down_dim//8, kernel_size=1)self.value_conv4 = Conv2d(in_channels=down_dim, out_channels=down_dim, kernel_size=1)self.gamma4 = Parameter(torch.zeros(1))self.conv5 = nn.Sequential(nn.Conv2d(in_dim, down_dim, kernel_size=1),nn.BatchNorm2d(down_dim),  nn.PReLU()  #如果batch=1 ,进行batchnorm会有问题)self.fuse = nn.Sequential(nn.Conv2d(5 * down_dim, in_dim, kernel_size=1), nn.BatchNorm2d(in_dim), nn.PReLU())self.softmax = Softmax(dim=-1)def forward(self, x):x = self.down_conv(x)conv1 = self.conv1(x)conv2 = self.conv2(x)m_batchsize, C, height, width = conv2.size()proj_query2 = self.query_conv2(conv2).view(m_batchsize, -1, width * height).permute(0, 2, 1)proj_key2 = self.key_conv2(conv2).view(m_batchsize, -1, width * height)energy2 = torch.bmm(proj_query2, proj_key2)attention2 = self.softmax(energy2)proj_value2 = self.value_conv2(conv2).view(m_batchsize, -1, width * height)out2 = torch.bmm(proj_value2, attention2.permute(0, 2, 1))out2 = out2.view(m_batchsize, C, height, width)out2 = self.gamma2* out2 + conv2conv3 = self.conv3(x)m_batchsize, C, height, width = conv3.size()proj_query3 = self.query_conv3(conv3).view(m_batchsize, -1, width * height).permute(0, 2, 1)proj_key3 = self.key_conv3(conv3).view(m_batchsize, -1, width * height)energy3 = torch.bmm(proj_query3, proj_key3)attention3 = self.softmax(energy3)proj_value3 = self.value_conv3(conv3).view(m_batchsize, -1, width * height)out3 = torch.bmm(proj_value3, attention3.permute(0, 2, 1))out3 = out3.view(m_batchsize, C, height, width)out3 = self.gamma3 * out3 + conv3conv4 = self.conv4(x)m_batchsize, C, height, width = conv4.size()proj_query4 = self.query_conv4(conv4).view(m_batchsize, -1, width * height).permute(0, 2, 1)proj_key4 = self.key_conv4(conv4).view(m_batchsize, -1, width * height)energy4 = torch.bmm(proj_query4, proj_key4)attention4 = self.softmax(energy4)proj_value4 = self.value_conv4(conv4).view(m_batchsize, -1, width * height)out4 = torch.bmm(proj_value4, attention4.permute(0, 2, 1))out4 = out4.view(m_batchsize, C, height, width)out4 = self.gamma4 * out4 + conv4conv5 = F.upsample(self.conv5(F.adaptive_avg_pool2d(x, 1)), size=x.size()[2:], mode='bilinear') # 如果batch设为1,这里就会有问题。return self.fuse(torch.cat((conv1, out2, out3,out4, conv5), 1))

FoldConv_ASPP

ECCV2020 Suppress and Balance: A Simple Gated Network for Salient Object Detection

ASPP中空洞卷积只能聚合9个单点像素,而为了获得9个成块的特征,FoldConv先将特征图Fold之后实施空洞卷积最后再Unflod回去。参数量会增大很多,因为这里通道数增加了,Dconv的参数也增加四倍。
在这里插入图片描述

class FoldConv_aspp(nn.Module):def __init__(self, in_channel, out_channel, out_size,kernel_size=3, stride=1, padding=0, dilation=1, groups=1,win_size=3, win_dilation=1, win_padding=0):super(FoldConv_aspp, self).__init__()#down_C = in_channel // 8self.down_conv = nn.Sequential(nn.Conv2d(in_channel, out_channel, 3,padding=1),nn.BatchNorm2d(out_channel),nn.PReLU())self.win_size = win_sizeself.unfold = nn.Unfold(win_size, win_dilation, win_padding, win_size)fold_C = out_channel * win_size * win_sizedown_dim = fold_C // 2self.conv1 = nn.Sequential(nn.Conv2d(fold_C, down_dim,kernel_size=1), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv2 = nn.Sequential(nn.Conv2d(fold_C, down_dim, kernel_size, stride, padding, dilation, groups),nn.BatchNorm2d(down_dim),nn.PReLU())self.conv3 = nn.Sequential(nn.Conv2d(fold_C, down_dim, kernel_size=3, dilation=4, padding=4), nn.BatchNorm2d(down_dim), nn.PReLU())self.conv4 = nn.Sequential(nn.Conv2d(fold_C, down_dim, kernel_size=3, dilation=6, padding=6), nn.BatchNorm2d( down_dim), nn.PReLU())self.conv5 = nn.Sequential(nn.Conv2d(fold_C, down_dim, kernel_size=1),nn.BatchNorm2d(down_dim),  nn.PReLU()  #如果batch=1 ,进行batchnorm会有问题)self.fuse = nn.Sequential(nn.Conv2d(5 * down_dim, fold_C, kernel_size=1), nn.BatchNorm2d(fold_C), nn.PReLU())# self.fold = nn.Fold(out_size, win_size, win_dilation, win_padding, win_size)self.up_conv = nn.Conv2d(out_channel, out_channel, 1)def forward(self, in_feature):N, C, H, W = in_feature.size()in_feature = self.down_conv(in_feature) #降维减少通道数in_feature = self.unfold(in_feature) #滑窗 [B, C* kH * kW, L] in_feature = in_feature.view(in_feature.size(0), in_feature.size(1),H // self.win_size, W // self.win_size)in_feature1 = self.conv1(in_feature)in_feature2 = self.conv2(in_feature)in_feature3 = self.conv3(in_feature)in_feature4 = self.conv4(in_feature)in_feature5 = F.upsample(self.conv5(F.adaptive_avg_pool2d(in_feature, 1)), size=in_feature.size()[2:], mode='bilinear')in_feature = self.fuse(torch.cat((in_feature1, in_feature2, in_feature3,in_feature4,in_feature5), 1))in_feature = in_feature.reshape(in_feature.size(0), in_feature.size(1), -1)in_feature = F.fold(input=in_feature, output_size=H, kernel_size=2, dilation=1, padding=0, stride=2)in_feature = self.up_conv(in_feature)return in_feature
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 网站防护使用高防CDN有哪些好的效果

    CDN是指内容分发网络,是通过将源站的内容分发至各地最接近用户的加速节点上,使用户就近获取所需内容,有效的缩短用户访问服务器的时间,从而降低延迟来提高用户访问网站的速度。 高防CDN,也称Web应用防火墙&#xff0c…...

    2024/5/8 16:41:17
  2. 【报告分享】2021汽车行业内容生态发展研究-汽车之家x克劳锐(附下载)

    摘要:汽车内容市场有怎样的变化?用户的消费偏好如何?创作者面临怎样的机遇与挑战?未来发展趋势究竟如何?随着消费市场与网络平台的用户逐渐年轻化,传统的汽车行业与汽车垂类内容迎来了新的趋势与变局,用户对…...

    2024/4/14 8:03:25
  3. K8s系列之:Pod的配置管理

    K8s系列之:Pod的配置管理 一、ConfigMap概述二、创建ConfigMap资源对象1.通过yaml配置文件方式创建2.通过kubectl命令行方式创建3.kubectl命令创建configmap用法举例三、容器应用对ConfigMap使用方法四、在Pod中使用ConfigMap1.通过环境变量方式使用ConfigMap2.通过volumeMoun…...

    2024/4/14 8:03:40
  4. 年底入职的测试,天天早起晚睡,卷的让人直呼崩溃...

    2021年已经结束了,最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的金三银四的面试计划。 内卷的来源 内卷最早的“出处”是几张名校学霸的图片。 大学生们刷爆朋友圈的几张“内卷”图片是这样的:有的人骑在自行车上看书…...

    2024/4/18 0:59:59
  5. Tesla AI Day:特斯拉如何实现自动驾驶的详解

    之前上课的时候偶然间看到了知乎上关于特斯拉如何实现自动驾驶的详解,因为我本身就是做算法的,对自动驾驶也很感兴趣,得知信息来源于Tesla的AI Day,于是下课后马不停蹄就去找了回放好好学习学习。 视频连接:https://w…...

    2024/4/14 8:03:00
  6. 【西电-网络空间安全-大二下】2022-微机原理与系统设计

    微机原理与系统设计...

    2024/4/14 8:03:15
  7. 之前从未接触过编程,想学Python怎么开始?(Python是什么?Python教程,Python就业,Python爬虫,Python入门以及Python数据分析史上最全学习路线图)

    生活不止眼前的苟且,还有诗和远方。如果你连苟且都做不到,何来的诗和远方呢? 分享一下我从内心厌恶程序员到毕业后找不到工作的无奈,参加培训,再到两年Python程序员的心路历程。 我大学考上的是普通二本&#xff0c…...

    2024/4/14 8:03:30
  8. 大数据之-Hadoop3.x_Yarn_容量调度器任务优先级---大数据之hadoop3.x工作笔记0153

    然后我们再来看容量调度器中的,任务优先级, 比如上面我们有5个任务,那么我们怎么做到,比如执行完了,第一个任务以后,让他直接去执行 第5个任务去呢 我们去看看,容量调度器的,任务优先级,要想使用需要先配置,初始的时候 yarn把所有的任务的优先级限制为0,如果要使用需要放…...

    2024/4/7 16:06:02
  9. PTA1015 德才论(C++)

    题目: 宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而与之,与其…...

    2024/5/8 21:31:15
  10. Wikijs_VMWare虚拟机安装过程

    由于工作原因,需要搭建一个用于展示文档的页面,无需用户注册,只需要展示即可 而Wikijs是一个好用的文档管理工具,界面美观,且较为轻量。因此计划使用Wikijs的框架进行文档展示页面的搭建 初次安装尝试使用虚拟机VMWare…...

    2024/4/14 8:07:55
  11. Android笔试题大全(持续更新中),android实战项目健身

    4. 下面不是Android四大组件之一的:( B ) A、Activity B、Intent C、Service D、ContentProvider 5. android 中下列属于Intent的作用的是( C ) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在…...

    2024/4/16 21:21:14
  12. 两种常用的设计模式

    尚学堂学习笔记,用于复习 设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候的固定做法,设计模式有很多种,比较流行的是:GOF23种设计模式。 对于初学者,先学习两个最常用的设计模式&#xff…...

    2024/5/8 19:40:17
  13. 练习2-3 输出倒三角图案

    #include<stdio.h> int main(){int i,j;for(i0;i<4;i){for(j0;j<i;j){printf(" ");} //PAT对于格式要求严格&#xff0c;空格和换行要注意 for(j0;j<4-i;j){if(j!4-i-1){printf("* ");} else {printf("*");}}printf("\n&quo…...

    2024/4/7 16:05:58
  14. redis学习步骤

    什么是Redis redis是一个性能优良&#xff0c;基于内存&#xff0c;key-value存储数据&#xff0c;可以进行自动持久化的nosql数据库 nosql数据库 和 sql数据库的区别 数据结构 sql 表格nosql 其他形式 例如&#xff1a;key-value 事务 sql 强事务 一组操作同时成功或者同时失…...

    2024/4/18 0:38:05
  15. 873真题2018C语言

    2018 1写个函数&#xff0c;七个双精度浮点数&#xff0c;从大到小排序输出中值&#xff0c; #include <stdio.h> #include <string.h> //对数组元素排序 void swap(int *pa,int n) {int i,j,t;for(i0;i<n-1;i){for(ji1;j<n;j){if(*(pai)>*(paj)){t*(pai…...

    2024/4/20 8:58:40
  16. SpringBoot对异常的统一处理

    Spring Boot默认提供了一种映射到错误页面/error的机制来处理所有的错误&#xff0c;可以映射到名为404或500等的错误页面&#xff0c;但此种机制存在局限性。为此&#xff0c;SpringBoot提供了注解的方式自定义统一处理服务器500错误机制。 ControllerAdvice注解表示我们定义的…...

    2024/4/14 8:03:25
  17. 【C++】2. 简单程序设计

    文章目录1. 闰年判断2. 比较两个数的大小3. switch语句用法4. 循环语句用法5. enum枚举5. typedef声明1. 闰年判断 知识点&#xff1a; cout&#xff0c;cin&#xff0c;箭头方向创建简单的类和对象&#xff08;纯纯力扣模板&#xff09;主函数的return 0&#xff1b; #incl…...

    2024/5/8 18:52:43
  18. Filter过滤器导致CSS样式失效

    F12打开控制台看到如下警告&#xff1a; 问题代码&#xff1a; public class CharacterEncodingFilter extends HttpFilter {Overridepublic void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletExcept…...

    2024/4/18 8:18:42
  19. 并查集练习-合根植物

    合根植物1&#xff09;题目&#xff08;合根植物&#xff09;2、输入描述3、输出描述4、示例5、样例说明6、解题思路7、题解1&#xff09;题目&#xff08;合根植物&#xff09; w星球的一个种植园&#xff0c;被分成 m * n 个小格子&#xff08;东西方向m行&#xff0c;南北方…...

    2024/4/18 23:13:46
  20. 蓝桥杯:乘积尾零————Python题解

    目录题目解题思路Code运行结果题目 解题思路 暴力解题就可以。 Code # -*- coding:UTF-8 -*- """ Project :每日一题 File :乘积尾零.py IDE :PyCharm Author :Kinght_123 Date :2022/1/23 14:12 """ if __name__ __main__:res …...

    2024/4/14 8:04:06

最新文章

  1. 7-66 按层遍历二叉树

    用先序和中序序列构造一棵二叉树(树中结点个数不超过10个),通过用队记录结点访问次序的方法实现对二叉树进行按层遍历,即按层数由小到大、同层由左到右输出按层遍历序列。 输入格式: 第一行输入元素个数 第二行输入先序序列,以空格隔开 第三行输入中序序列,以空格隔开…...

    2024/5/8 23:11:45
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. Django实现的登录注册功能

    1 前言 在Web开发中&#xff0c;用户登录和注册是最基本且必不可少的功能。Django&#xff0c;作为一个高级的Python Web框架&#xff0c;为我们提供了强大的工具和库来快速实现这些功能。下面&#xff0c;我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...

    2024/5/5 8:36:26
  4. 三防笔记本丨工业笔记本电脑丨车辆检修的应用以及优势

    伴随着汽车技术的不断更新迭代以及车辆复杂性的增加&#xff0c;现代车辆检修工作需要更高效、更精确的方法来确保车辆的安全和性能。在这过程中&#xff0c;工业笔记本电脑作为一种强大的工具&#xff0c;为车辆检修提供了诊断、记录、分析和解决问题的核心功能 故障诊断与维修…...

    2024/5/8 2:06:31
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/8 6:01:22
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57