一、正则化层中nn.BatchNorm2d简介
主要作用:对输入函数采用正则化。正则化的主要作用是加快神经网络的训练速度。
class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None)
输入参数:
-
num_features: 形状为\((N, C, H, W)\)
-
其他参数默认即可
举例:
# With Learnable Parameters
m = nn.BatchNorm2d(100)
# Without Learnable Parameters
m = nn.BatchNorm2d(100, affine=False)
input = torch.randn(20, 100, 35, 45)
output = m(input)
该函数用得不多
二、其他层简介
1. Recurrent Layers(Recurrent层)
内含RNN、LSTM等函数,主要在nlp领域用的比较多
官方文档: Recurrent Layers
2. Transformer Layers
3. Linear Layers(线性层)
nn.Linear
class torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None
(1)参数介绍及计算方法
参数介绍:
-
in_features
-
out_features
-
bias(bool)
线性层具体参数解释如下图:
-
\(in\_features=d\),即指的是in_features的个数
-
\(out\_features=L\),即指的是out_features的个数
计算\(g\)的方法(以上图\(g_1\)为例):
- \(x_1,\dots,x_i,\dots,x_d\)每个指向\(g_1\)的箭头上,均有:
\[k_i*x_i+b_i \]
-
其中,\(b_i\)代表偏置,参数\(bias=True\),则加上\(b\);\(bias=False\),则不加\(b\)
-
在每次训练神经网络的过程中,均会调整\(k_i\)、\(b_i\)的值,直到它变成一个合适的数值
-
由此可得:
\[g_1=\sum^{d}_{i=1}{k_ix_i+b_i} \]
(2)代码示例
以典型的_VGG16 Model_网络结构为例:
因此,设置_in_features=4096; out_feature=1000_
- 下面代码以一个尺寸为_n×n_的图像为例,先将图像展开成一行,即_1×_\(n2\)的尺寸。最后将_1×_\(n2\)尺寸的图像通过线性层,转化为_1×10_尺寸的图像。
import torch
import torchvision
from torch.utils.data import DataLoader
from torch import nn
from torch.nn import Lineardataset=torchvision.datasets.CIFAR10("./dataset",train=False,download=True,transform=torchvision.transforms.ToTensor())
dataloder=DataLoader(dataset,batch_size=64)# for data in dataloder:
# imgs,targets = data
# #print(imgs.shape) #[Run] torch.Size([64, 3, 32, 32])
#
# #我们的目标是把图像尺寸变成1×1×1×根据前面计算得出的数,下面进行转换
# output=torch.reshape(imgs,(1,1,1,-1))
# #print(output.shape) #[Run] torch.Size([1, 1, 1, 196608])#根据上面output得出的196608尺寸数据,构造神经网络结构
class Demo(nn.Module):def __init__(self):super(Demo,self).__init__()self.linear1=Linear(in_features=196608,out_features=10)def forward(self,input):output=self.linear1(input)return output#调用神经网络
demo=Demo()for data in dataloder:imgs,targets=dataoutput=torch.reshape(imgs,(1,1,1,-1))output=demo.forward(output)print(output.shape) #[Run] torch.Size([1, 1, 1, 10])
由此,成功将_1×1×1×196608_尺寸的图像转化为_1×1×1×10_尺寸的图像
注意:
- 可以用torch.flatten() 函数将图像展开成一行,即替换第33行的代码
output=torch.reshape(imgs,(1,1,1,-1))
,为:
output=torch.flatten(imgs)
# print(output.shape) #[Run] torch.Size([196608])
-
torch.flatten() 和torch.reshape() 的区别:
-
torch.flatten更方便,可以直接把图像变成一行
-
torch.reshape功能更强大,可任意指定图像尺寸
-
4. Dropout Layers
主要作用:在训练的过程中随机把一些input(输入的tensor数据类型)变成0。变成0的概率由\(p\)决定
class torch.nn.Dropout(p=0.5, inplace=False)
- 变成0的主要原因是防止过拟合
5. Sparse Layers
nn.Embedding
主要用于自然语言处理中
class torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None,max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False,_weight=None, _freeze=False, device=None, dtype=None)
6.Distance Functions
主要作用:计算两个值之间的误差,并指定误差的衡量标准
7. Loss Function
主要作用:计算Loss的误差大小
三、调用pytorch中的网络模型
现在我们已经学会如何自己搭建神经网络模型了,下面介绍pytorch中神经网络模型的调用方法。根据官方文档,我们可以调用自己需要的网络结构,而不需要自己写代码
1.图像方面的网络结构
官网文档:Models and pre-trained weights — Torchvision 0.15 documentation
2.语音方面的网络结构
官方文档:torchaudio.models — Torchaudio 2.0.1 documentation
最后的最后
感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。
因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
五、面试资料
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】