Pytorch深度学习实践(三):反向传播

概念:

import torch

torch.Tensor()是python类,是默认张量类型FloatTensor()的别名,会调用构造函数并且生成单精度浮点型的张量。

张量的例子

 
对于机器学习训练的目的就是为了调整ω的值,致使损失不断减少,因此在上节课(传送门)的学习过程中,对于复杂的网络模型,我们需要花费大量的时间来求解ω,因此我们采用反向传播的方式来求解权重Ω。简单地说,每次前馈通过网络后,该算法根据权值和偏差进行后向传递,调整模型的参数。这样的反向传播虽然带来了2倍于前向传播的计算量,但是会更快地得到更为准确的结果。

 反向传播代码实现:

import torch
import matplotlib.pyplot as plt

x_data = [1.0,2.0,3.0]
y_data = [2.0,4.0,6.0]

w = torch.Tensor([3.0])  #initial gradient
w.requires_grad = True    #calculate the gradient automatically

def forward(x):
    return w * x

def loss(x,y):
    y_pred = forward(x)
    return (y_pred - y) ** 2

print("Predict before training",4,forward(4).item())  #item() is the value of tensor

epoch_list = []
loss_list =[]

for epoch in range(100):
    for x,y in zip(x_data,y_data):
        l=loss(x,y)
        l.backward()        #propagate backwardly
        print('\tgrad',x,y,w.grad.item())    # save the gradient to w, and print the value
        learning_rate = 0.01
        w.data = w.data - learning_rate*w.grad.data
        w.grad.data.zero_()  # set the data to zero
    print("process:",epoch,l.item())
    epoch_list.append(epoch)
    loss_list.append(l.item())
    
print('Predict after training', 4, forward(4).item())

plt.plot(epoch_list,loss_list)
plt.xlabel("epoch")
plt.ylabel("Loss")
plt.show()

参考:

https://blog.csdn.net/tfcy694/article/details/85338745

https://blog.csdn.net/qq_31821675/article/details/79188449?utm_term=pythontensor%E6%98%AF%E4%BB%80%E4%B9%88&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduweb~default-1-79188449&spm=3001.4430

https://zhuanlan.zhihu.com/p/48982978

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Pytorch中进行深度学习实践的步骤如下: 1. 准备数据集:使用Pytorch提供的工具包torchvision,可以方便地下载和加载一些常见的数据集,如MNIST和CIFAR-10。你可以使用train_set和test_set来分别加载训练集和测试集。 2. 构建模型:在Pytorch中,你可以使用类(Class)来设计和构建深度学习模型。你需要定义一个继承自nn.Module的类,并实现其中的forward方法,该方法描述了如何从输入数据中计算出模型的输出。在这个过程中,你可以根据输入数据的维度来确定权重矩阵w和偏置项b的大小。 3. 定义损失函数和优化器:在深度学习中,我们需要定义一个损失函数来衡模型的预测结果与真实标签之间的差异。常见的损失函数有交叉熵损失函数(CrossEntropyLoss)和均方误差损失函数(MSELoss)。然后,你可以选择一个优化器来更新模型的参数,常见的优化器有随机梯度下降法(SGD)和Adam优化器。 4. 训练模型:在训练模型之,你需要定义一些超参数,如学习率、迭代次数和批大小。然后,你可以使用一个循环来迭代地训练模型。在每一次迭代中,你需要将输入数据传递给模型,计算模型的输出,计算损失函数并进行反向传播,最后使用优化器来更新模型的参数。重复这个过程直到达到设定的迭代次数。 5. 模型评估:在训练完成后,你可以使用测试集来评估模型的性能。通过传递测试集的输入数据给模型,计算模型的预测结果,并与真实标签进行比较,可以得到模型的准确率或其他性能指标。 综上所述,这是一个基本的Pytorch深度学习实践流程,你可以根据具体的任务和数据集进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值