Pytorch2

训练过程

(1)设置优化器

optimizer=torch.optim.Adam(model.parameters(),lr=0.001)
#Adam优化器,是一种自适应学习率的算法,常用于训练深度学习模型
#model.parameters()返回模型中所有需要被训练的参数
#lr=0.001设置了学习率0.001,学习率是一个超参数,用来控制在优化过程中参数更新的步长大小

(2)定义损失函数

criterion=nn.CrossEntropyLoss()
#使用交叉熵损失函数,他是分类任务中常用的损失函数之一。他同时考虑了正确分类的概率并进行了对数交换,以胜避数值不稳定

(3)训练循环

for epoch in range(5):
    for images,labels in train_loader:
#外层循环变量epoch用于迭代器遍历训练数据。train_loader将数据集分成多个批次,其中每个批次都包含了图像和相应的标签

(4)数据预处理

    images=images.view(-1,28*28)
#将图像张量从二维图像(每个图像28*28像素)转换为一维向量,因为我们的模型是全连接的(SimpleNN).-1在这里的意思是自动计算这一维的大小,确保整个批次的数据能被正确reshape

(5)梯度归零

    optimizer.zero_grad()
#在每次的梯度计算之前需要将梯度归零(重置),否则梯度会累加到已有的梯度上,这是因为Pytorch在调用.backward()时默认会累积梯度

(6)前向传播

    output=model(images)
#执行模型的前向传播步骤,输出每个类别的预测结果

(7)计算损失

    loss=criterion(output,labels)
#根据模型输出和真实标签计算损失值

(8)反向传播

    loss.backward()
#执行反向传播,计算关于损失函数的所有模型参数的梯度

(9)参数更新

    optimizer.step()
#根据计算得到的梯度更新模型参数,以最小化损失函数

评估与分析

(1)函数定义

def evaluate_model(model,data_loader):
#定义名为evaluate_model的函数,接受两个参数:model---训练好的模型,data_loader---用于评估该模型的数据加载器

(2)模型评估模式

    model.eval()
#调用.eval()将模型设置到评估模式

(3)初始化计数器

    total_correct=0
    total=0
#初始化total_correct变量来记录预测正确的样本数量,初始化total变量来记录总样本数量

(4)禁用梯度计算

    with torch.no_grad():
#使用torch.no_grad()上下文管理器在评估模型时禁用梯度计算

(5)数据加载并处理

        for images,labels in data_loader:
            images=images.view(-1,28*28)
#迭代数据加载器中的数据,数据加载器返回一批图像和对应的标签。
#将每批图像数据通过view方法调整为二维张量,以匹配模型的输入格式(模型期望输入为向量形式)

(6)模型预测

            output=model(images)
            _,predicted=torch.max(output.data,1)
#使用模型对输入图像进行前向传播,得到预测结果
#torch.max(outpuut.data,1)返回每一行的最大值的索引,即预测的类别标签

(7)统计正确的预测数量和总数量

            total+=labels.size(0)
            total_correct+=(predicted==labels).sum().item()
#更新总样本数。labels.size(0)给出当前批次的样本数量。
#更新正确预测的总数。比较predicted和labels得到一个布尔张量,然后使用.sum().item()得到正确预测的数量

(8)打印准确率

    print(f'Accuracy:{100*total_correct/total:.2f}%')
#最后输出准确率,计算方式是正确预测的数量除以总样本数量,转换为百分比格式输出

(9)调用函数评估模型

evaluate_model(model,test_loader)
#使用上面定义的evaluate_model函数和参数model(训练好的模型)及test_loader(测试数据加载器)来评估模型性能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值