【人工智能-作业3:例题程序复现 PyTorch版】

本文对比分析了使用PyTorch复现的【作业3】与【作业2】,讨论了自动梯度计算、激活函数(Sigmoid与ReLU)、损失函数(MSE与交叉熵)的选择及其影响,以及步长、训练次数和权重初始化对模型训练的影响。总结了PyTorch自动计算梯度的优势和不同激活函数、损失函数的特点。
摘要由CSDN通过智能技术生成

一、使用pytorch复现课上例题。
二、 对比【作业3】和【作业2】的程序,观察两种方法结果是否相同?如果不同,哪个正确?
三、【作业2】程序更新
四、对比【作业2】与【作业3】的反向传播的实现方法。总结并陈述。
五、激活函数Sigmoid用PyTorch自带函数torch.sigmoid(),观察、总结并陈述。
六、激活函数Sigmoid改变为Relu,观察、总结并陈述。
七、损失函数MSE用PyTorch自带函数 t.nn.MSELoss()替代,观察、总结并陈述。
八、损失函数MSE改变为交叉熵,观察、总结并陈述。
九、改变步长,训练次数,观察、总结并陈述。
十、权值w1-w8初始值换为随机数,对比【作业2】指定权值结果,观察、总结并陈述。
总结
一、使用pytorch复现课上例题。

import torch
 
w1 = torch.randn(1, requires_grad=True)
w2 = torch.randn(1, requires_grad=True)
w3 = torch.randn(1, requires_grad=True)
w4 = torch.randn(1, requires_grad=True)
 
a = torch.tensor(1.)
print("a = ", a.data)
print("w = ", w1.data, w2.data, w3.data, w4.data)
b = w1 * a
c = w2 * a
d = w3 * b + w4 * c  # compute graph
print("d = ", d.data)
L = (10 - d).sum()  # Loss function
print("L = ", L.data)
L.backward()        # Back propagate
 
print("grad : ",w1.grad, w2.grad, w3.grad, w4.grad)
learning_rate = 1
w1.data = w1.data - learning_rate * w1.grad.data
w2.data = w2.data - learning_rate * w2.grad.data
w3.data = w3.data - learning_rate * w3.grad.data
w4.data = w4.data - learning_rate * w4.grad.data
print("w new = ", w1.data, w2.data, w3.data, w4.data)

二、 对比【作业3】和【作业2】的程序,观察两种方法结果是否相同?如果不同,哪个正确?

两种方法的不同,Pytorch计算的正确

三、【作业2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值