深度学习-ResNet
网络层数越来越深出现的问题:
梯度消失或梯度爆炸问题
退化问题
ResNet创新点:
超级深的网络结构
提出Residual模块
使用Batch Normalization 加速训练,丢弃Dropout
ResNet34网络结构图如下
Residual模块左图主要针对的是网络层数较少的网络,右图主要针对网络层数较多的网络
在左边的结构中,主线是将输入特征矩阵经过两个 3 × 3 的卷积层,右边有一个弧线直接从输入连接到输出,与卷积后的特征矩阵按元素相加得到最终特征矩阵结果。右边的结构的主分支则是在输入与输出都加上了 1 × 1 的卷积层,用来实现降维和升维。右边的参数节省了 94%
实现代码import torch.nn as nnimport torchclass BasicBlock(nn.Module): expansion = 1 def __init__(self, in_channel, out_channel, stride=1, downsample=None, **kwargs): super(BasicBlock, sel ...
深度学习-多标签图像分类
多标签图像分类论文学习CSRA(ICCV2021)Residual Attention: A Simple but Effective Method for Multi-Label Recognition
灵感来源
主要贡献
提出一个简单但是有效的方式来提升预训练模型(不需要进一步的训练)
提出CSRA模块(在四个多标签数据集中取得优异结果)
对于主要的注意力模型的一个直观地可视化
总体架构
大致流程:图片通过CNN Backbone 得到特征图,再通过1×1的卷积,将特征图变为C×h×w,C代表的是类的个数,然后将特征送入多头CSRA模块,得到输出y` ,将所有的 y相加,得到最终的输出。
Residual attention
举例:X: h×w×d(7×7×2048),代表的是$x_1,x_2,x_3…x_{49},其中x_{i}∈R^{2048}$,经过1×1的卷积部分,得到$m_1,m_2,…m_{i},其中m_i代表的是第i类$,
Average pooling平均池化:$g=\sum_{k=1}^{49}x_k$
Spatial pooli ...
深度学习-数据集的划分
数据集的划分方法留出法留出法:将已知数据集分成两个互斥的部分,其中一部分用来训练模型,另一部分用来测试模型,评估其误差,作为泛化误差的估计
通常,训练集:测试集=7:3(按照分层采样的方式)
交叉验证法k折交叉验证法:将数据集D划分K个大小相似的互斥的数据子集,子集数据尽可能保证数据分布的一致性(分层采样),每次从中选取一个数据集作为测试集,其余用作训练集,可以进行k次训练和测试,得到评估均值。也叫k折交叉验证。重复p次,就是p次k折交叉验证。K的取值会影响到结果的稳定性和保真性,通常k取10。
常用于分类
实现代码
from sklearn.model_selection import train_test_split, KFoldimport torchfrom torch.utils.data import DataLoader, TensorDataset# 假设我们有一些数据X = torch.randn(1000, 20) #创建一个形状为(1000,20)的张量y = torch.randint(0, 2, (1000,)) #创建了一个长度为1000的一维张 ...
Marktext用法、hexo指令以及一些乱七八糟的指令
Martext用法学习记录@键可以显示出所有可用功能的窗口
Ctrl+j 可以打开侧边栏
Ctrl+shift+T可以创建表格
:s:可以创建小表情:sleeping::sneezing_face::kissing_closed_eyes:
改变字体颜色加上 <font color='red'></font> 改变字体颜色
Ctrl+Shift+i快速导入图片
数学符号书写语法上标:$x^{2}$ $x^2$下标:$x_{i}$ $x_{i}$分数:$\frac{分子}{分母}$ $\frac{分子}{分母}$累加:$\sum_{i=0}^{y}x_i$ $\sum_{i=0}^{y}x_i$累和:$\prod_{i=0}^{y}x_i$ $\prod_{i=0}^{y}x_i$极限:$\lim_{x \to \infty} 表达式 ...