Learn the Basics — PyTorch Tutorials 2.3.0+cu121 documentation (https://pytorch.org/tutorials/beginner/basics/intro.html)

人工智能入门:运用Pytorch演习分类器的过程_模子_权重 智能问答

之前有几篇文章都记录了我的想法,末了的问题是,如何理解演习的过程?

演习的代码

演习过程为:

建立一个循环,迭代数据加载器中的每个批次。
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对数据的操作。