图像识别技术有应用

训练模型

 

加载预处理数据集:

 

可以借助PyTorch的数据处理工具,如 torch.utils 和 torchvision 等

 

定义损失函数:

 

既可以自定义,也能使用PyTorch内置的,像回归任务常用 nn.MSELoss()  ,分类任务常用 nn.BCELoss()

 

定义优化方法:

 

PyTorch的优化方法封装在 torch.optim 中,基于基类 optim.Optimizer ,能实现自定义优化步骤。常用的优化算法如梯度下降及其变种,使用时可像 optimizer = torch.optim.SGD(params, lr = 0.001) 这样设置

 

循环训练模型

 

设置训练模式:通过 model.train() 将模型所有模块设为训练模式。

 

 梯度清零:默认梯度累加,需用 optimizer.zero_grad() 手动清零。

 

 求损失值:用 loss_fun(y_prev, y_true) 计算, y_prev 是模型预测值, y_true 是真实值。

 

 反向传播: loss.backward() 自动求导,计算梯度。

 

 更新参数: optimizer.step() 依据计算的梯度更新模型参数。

 

循环测试/验证模型

 

设置测试模式:调用 model.eval() 将模型设为测试或验证模式,此时模型中某些层的行为会改变。

 

计算损失和预测值:在 with torch.no_grad(): 代码块内进行,该代码块可停止梯度计算,节省内存和计算资源。

 

可视化结果:文中提到后续会举例说明如何构建和训练模型,还解释了 model.train() 与 model.eval() 的使用场景,尤其是在包含Batch Normalization(BN)层和Dropout的模型中,训练和测试时分别调用这两个方法能让模型以合适的方式运行。

 

实现神经网络实例

 

目的和背景:旨在借助构建一个用于手写数字识别的神经网络实例,直观展示如何运用PyTorch的 nn 工具箱实现神经网络,并为后续详细介绍 nn 各模块做铺垫。实例运行环境为PyTorch 1.5,可在GPU或CPU上执行,采用MNIST数据集。

 

主要步骤

 

数据获取:利用PyTorch内置的 mnist 函数下载MNIST数据集。

 

数据处理:通过 torchvision 对下载的数据进行预处理,如归一化、转换为张量等操作,并使用 torch.utils 建立数据迭代器,便于按批次读取数据。

 

数据可视化:将源数据可视化,以便直观了解数据特征,比如展示MNIST数据集中的手写数字图像。

 

模型构建:运用 nn 工具箱搭建神经网络模型,此模型包含输入层、两个隐藏层和输出层。

 

模型设置:实例化搭建好的模型,并定义合适的损失函数(如交叉熵损失函数)和优化器(如随机梯度下降优化器)。

 

模型训练:利用准备好的训练数据对模型进行训练,在训练过程中不断调整模型参数,以最小化损失函数。

 

结果可视化:将训练结果进行可视化呈现,比如展示训练过程中的损失值变化、模型在测试集上的准确率等。

 

神经网络结构:该神经网络有两个隐藏层,输入层接收大小为28\times28的图像数据(经展平处理) 。隐藏层使用ReLU激活函数,能引入非线性,增强模型的表达能力。输出层使用softmax激活函数,将输出转换为概率分布,方便确定每个数字类别的预测概率。最后通过 torch.max(out,1) 找出概率最大的索引,作为预测的数字结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值