人工智能入门:运用Pytorch演习分类器的过程_模子_权重
Learn the Basics — PyTorch Tutorials 2.3.0+cu121 documentation (https://pytorch.org/tutorials/beginner/basics/intro.html)
之前有几篇文章都记录了我的想法,末了的问题是,如何理解演习的过程?
演习的代码演习过程为:
建立一个循环,迭代数据加载器中的每个批次。for batch, (X, y) in enumerate(dataloader)
利用模型来进行前向传播,得到预测值。pred = model(X)利用供应的丢失函数,打算模型的预测值与真实标签之间的丢失。loss = loss_fn(pred, y)实行反向传播,打算丢失函数对模型参数的梯度。loss.backward()根据梯度更新模型参数,优化器会根据当前的参数和学习率来更新模型。optimizer.step()清空梯度,以便下一个批次的打算。optimizer.zero_grad()结果经由5个Epoch的演习,丢失逐步降落:
Epoch 1的结果
Epoch 5的结果
演习的过程模型的构造是这样的:
个中紧张的nn.Linear对输入数据进行线性变换,公式如下:
个中x是输入,A是权重(T代表矩阵的意思),b是偏置,y是输出,把稳这里的变量都是矩阵。
模型的演习过程是:
模型初始化时,所有的权重和偏置都随机初始化。第一次送入64对数据(batch的大小)进入模型演习,通过前向与反向传播更新了权重和偏置。然后清空之前打算的梯度,这是为了每个batch之间互不影响,把稳权重和偏置当然是不清空的。第二次再送入64对数据进入模型演习,通过前向与反向传播更新了权重和偏置。依次进行,直到所有的60000对数据全部送入演习过一次,即为一个epoch。下一个epoch开始,保留过去得到的权重和偏置,再次重复每次送入64对数据的操作。
本文系作者个人观点,不代表本站立场,转载请注明出处!