深度学习
文章平均质量分 64
橙意满满的西瓜大侠
一个普通学生
展开
-
完整的模型验证套路 pytorch
利用已经训练好的模型,给它提供输入。原创 2024-10-19 12:54:49 · 363 阅读 · 1 评论 -
利用GPU训练
"cuda" if torch.cuda.is_available() else "cpu" 防止因为没有GPU而报错。if torch.cuda.is_available(): 防止因为没有GPU而报错。在Edit的Notebook settings里可以修改硬件配置,选择GPU。参数可以写"cpu" "cuda" "cuda:0" "cuda:1"或。先定义device=torch.device("cuda")再加.to(device)直接加.cuda()原创 2024-10-19 11:07:42 · 178 阅读 · 0 评论 -
完整的模型训练套路 pytorch
1、(1).train():将模型设置为训练模式(2).eval():将模型设置为评估模式不写也可以(只对特定网络模型有作用,如含有Dropout的)2、:主要用于评估和推理,确保不会计算梯度,从而节省内存和加速计算。3、.item()的作用:将tensor型转为普通数值型当你有一个只有一个元素的张量时,可以使用.item()来提取这个值。4、如何由分类得分来计算正确率:[0.1,0.2],[0.3,0.4]]) #两个样本的二分类得分preds=原创 2024-10-17 20:57:04 · 260 阅读 · 0 评论 -
现有网络模型的修改和使用&&网络模型的保存与读取
以torchvision里的models模块里的vgg16网络模型为例:vgg16_false=torchvision.models.vgg16(weights=None) #表示不加载预训练权重vgg16_true=torchvision.models.vgg16(weights=VGG16_Weights.DEFAULT) #表示加载预训练权重添加新层:add_module#在classifier层级下,添加新模块(层),参数是(模块名,模块)修改现有的层:vgg_false.原创 2024-10-16 17:26:42 · 384 阅读 · 0 评论 -
反向传播和优化 pytorch
计算损失:result_loss=loss(outputs,targets)梯度清零:optim.计算梯度并反向传播:backward()更新参数:optim.step(): 在每次训练迭代之前清除所有优化器(如SGD、Adam等)维护的梯度信息。在神经网络中,每个参数(如权重和偏置)都有一个与之关联的梯度,这个梯度表示参数对损失函数的贡献程度。随着训练的进行,这些梯度会被累积,如果不加以重置,会导致梯度累加,从而影响模型的学习效果。因此,原创 2024-10-15 17:45:17 · 522 阅读 · 0 评论 -
损失函数pytorch
'mean'(默认)'sum'原创 2024-10-15 16:31:27 · 376 阅读 · 0 评论 -
搭建模型小实战
如图,cifar10 model structure :1、卷积:Conv2d(in_channels=3,out_channels=32,kernel_size=5,padding=2)将3通道变成32通道,即将3个特征图转变成32个特征图,共需要32个卷积核来提取特征。原创 2024-10-15 13:21:31 · 294 阅读 · 0 评论 -
线性层(全连接层)pytorch
通常,线性层后面会接一个非线性激活函数。这样,网络先做一次简单的转换(线性),然后用激活函数(非线性)添加一些复杂性。(即 output = activation(linear(input)) )2、在实践中,两者常常被视作同义词。FalseTrue(默认True,自动学习并添加偏置参数)这里,input_tensor形状为(3,4),意味着有3个样本(batch_size),每个样本有4个特征(输入张量的每一列通常代表一个特征)原创 2024-10-14 15:35:45 · 645 阅读 · 0 评论 -
非线性激活pytorch
1、self.sigmoid1=Sigmoid()output=self.sigmoid1(input)2、常见的非线性激活函数: 3、非线性激活的作用:线性函数:假设你用直线去描述波浪的形状。无论你怎么改变直线的斜率,结果都是一条直线,这样你就无法捕捉到波浪的起伏。这就像在神经网络中,如果只有线性激活函数,模型只能学习到线性关系,无法处理复杂的模式。非线性激活函数:现在,想象你可以用曲线来描绘波浪。这条曲线能够随着波浪的起伏而变化,能够很好地展现出波浪的复杂形状。这就类似于引入了非线性激活函数原创 2024-10-13 17:59:09 · 533 阅读 · 0 评论 -
最大池化pytorch
1、输入:张量的形状是(N,C,H,W)或(C,H,W)) – when True, will use ceil instead of floor to compute the output shape(True:向上取整,保留不足的部分;False:向下取整,去除不足一份的部分)2、池化的作用:从特征图中提取最有代表性的特征;防止过拟合,实现降维;保持平移不变性。(即保留重要特征,同时减少数据量,使模型训练得更快 eg: 1080P高清——>720P高清)原创 2024-10-13 17:43:30 · 571 阅读 · 0 评论 -
nn.Conv2d(二)
自动管理:这个模块会自动保存和更新卷积的权重(参数)每次使用时都要提供所有需要的参数,比如输入数据、卷积核的权重和偏置。原创 2024-10-10 23:43:14 · 486 阅读 · 0 评论 -
卷积的计算——nn.Conv2d(Torch.nn里的Convolution Layers模块里的Conv2d类)
张量:多维数组,用来表示数据(图像、视频等)通道:图像数据的一部分,表示不同的颜色或特征层通道只是张量的其中一个维度以一张RGB图像为例,该图像数据可以用一个三维张量(shape等于(C,H,W))来表示其中C表示通道数(对于RGB图像,C=3),H表示高度,W表示宽度再以一批64张图像组成的数据对象来看,它可以用一个四维张量(shape等于(N,C,H,W))来表示其中N表示批次大小(一批次图像的数量)原创 2024-10-10 20:05:00 · 530 阅读 · 0 评论 -
神经网络的基本骨架——nn.Module(torch.nn里的Containers模块里的Module类)
nn:neural network神经网络1、torch.nn:与神经网络有关的库Containers:torch.nn中的一个模块Module:所有神经网络模型的基础类(Base class for all neural network modules)注意:任何自定义的模型都应该继承自nn.Module,并实现__init__和forward方法,以定义模型的结构和前向传播的逻辑2、x=torch.tensor(1.0):将输入数据转为张量,因为模型期望收到张量(tensor)类型的输入。原创 2024-10-10 15:38:42 · 709 阅读 · 0 评论 -
DataLoader
PyTorch 提供的一个工具,用于批量加载数据集,支持多线程加载2、False表示在加载数据时不打乱顺序,True表示打乱顺序(shuffle:洗牌)True。原创 2024-10-10 14:58:32 · 291 阅读 · 0 评论 -
使用torchvision中的经典数据集
1、torchvision.datasets.CIFAR10:PyTorch 中的一个类,用于加载 CIFAR-10 数据集(CIFAR-10 是一个包含 60,000 张 32x32 彩色图像的数据库,分为 10 个类别)2、运行代码,在python控制台可以看到下载链接,复制下载链接,让迅雷来下载更快速3、这里的test_set元素类型是(PIL.Image,target),即一个数据对象=图片+标签target是分类的编号,共有十个类别,则target从0到9。原创 2024-10-10 14:42:52 · 242 阅读 · 0 评论 -
Transforms(二)
1、归一化是干什么的:对图像数据进行预处理,以确保输入模型的数据在相同的尺度上2、为什么需要归一化:为了消除奇异值,将数据缩放到一个小范围,这样梯度下降得更快,更容易求解3、将图像的每个通道(RGB,共3个通道)按特定的均值和标准差进行归一化mean和std的值是通常在 ImageNet 数据集上计算得出)原创 2024-10-09 18:29:25 · 607 阅读 · 0 评论 -
Transforms(一)
transforms就像是一个工具箱,里面装有很多类 (比如:totensor、resize等,可以在结构里查看到一个列表),类就是工具。但是类不能直接使用,要创建其实例对象之后才能调用(tool=transforms.ToTensor())而实例对象名(参数)这种形式可以自动调用call方法,进行工具的使用。补充: call方法可以使对象具有当作函数的功能,当你调用对象实例并且参数满足条件时,就会自动调用call方法(说白了就是先实例化,满足条件后自动调用call方法)原创 2024-10-08 21:29:40 · 364 阅读 · 0 评论 -
TensorBoard
TensorBoard可以看作是一个“训练监控仪表盘”,可以将训练过程中的数据可视化,让你通过图表直观地看到模型的表现,识别问题,并进行调试和优化。TensorFlow是用来训练模型的深度学习框架,在使用tensorflow训练模型时,可以通过tensorboard来对数据进行可视化,帮助优化模型。Pytorch也是一种深度学习框架。(一些项目可能会在研究阶段使用 PyTorch,随后在生产环境中使用 TensorFlow)原创 2024-10-07 23:15:51 · 789 阅读 · 0 评论 -
pytorch导入数据集
Dataset:一种数据结构,存储数据及其标签Dataloader:一种工具,可以将Dataset里的数据分批、打乱、批量加载并进行迭代等(方便模型训练和验证)Dataset就像一个大书架,存放着带有标签的数据书籍,并且这些书有编号(0,1,2...);而Dataloader就像一个图书管理员,负责从书架上按需取出书籍并分批提供给读者。原创 2024-10-07 21:08:20 · 787 阅读 · 0 评论 -
深度学习环境安装
pytorch/tensorflow库,调用cuda runtime version,接着cuda调用驱动(cuda driver version),最后驱动又调用GPU显卡。原创 2024-10-07 00:40:06 · 894 阅读 · 0 评论