深度学习基础教程

🌞欢迎莅临我的个人主页👈🏻这里是我专注于深度学习领域、用心分享知识精粹与智慧火花的独特角落!🍉

🌈如果大家喜欢文章,欢迎:关注🍷+点赞👍🏻+评论✍🏻+收藏🌟,如有错误敬请指正!🪐

🍓“请不要相信胜利就像山坡上的蒲公英一样唾手可得,但是请相信生活中总有美好值得我们全力以赴,哪怕粉身碎骨!”🌹

目录

预备知识

基础知识

(1)PyTorch基础知识

(2)线性回归模型

(3)逻辑回归模型

(4)全连接神经网络


预备知识

requires_grad :用于指示是否需要计算相应张量的梯度。如果 requires_grad=True,则表示需要对该张量进行梯度计算。

epoch:表示将所有训练样本都过一遍的完整训练过程。

Tensor:Tensor定义为最多可以包含四个维度的多维数组,但可以通过堆叠来创建更高维度的张量。可以使用 torch.Tensor() 、torch.eye()、 torch.randn() 、 torch.zeros() 或 torch.ones() 等构造函数来创建张量对象。

模型参数:模型内部的配置变量,模型可以根据数据可以自动学习出的变量,自行根据数据进行驱动调整。如:权重,偏差等。

超参数:模型外部的配置,不需要数据来驱动,而是在训练前或者训练中人为进行设定和调整,一般需要为它根据已有或现有的经验指定“正确”的值。如:迭代次数epoch,批量大小batch-size学习率,深层神经网络隐藏层数等

基础知识

(1)PyTorch基础知识

用法1:PyTorch计算梯度

x = torch.tensor(1., requires_grad=True)
y = x**2
y.backward()
print(x.grad)    # x.grad = 2 

通过torch.tensor()方法创建一个值为1.0的张量,并将requires_grad参数设置为True。根据公式 y = x**2 构建计算图,调用 y.backward() 方法,该方法会自动计算 y 对于 x 的梯度,并将梯度值保存在 x.grad 属性中,通过打印 x.grad 来查看计算得到的梯度值。

用法2:线性回归模型训练

x = torch.randn(10, 3)
y = torch.randn(10, 2)

linear = nn.Linear(3, 2)
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(linear.parameters(), lr=0.01)

pred = linear(x)
loss = criterion(pred, y)

loss.backward()
optimizer.step()

pred = linear(x)
loss = criterion(pred, y)

通过torch.rand()方法创建随机张量x和y,x是输入特征,y是目标值,使用nn.Linear(3,2)创建全连接层,输入、输出维度分别为3和2。定义损失函数 criterion 为均方误差(MSE)损失。优化器 optimizer,使用随机梯度下降(SGD)算法来更新模型参数,将 linear.parameters() 传递给优化器,以更新 linear 中的权重和偏置。进行前向传播,计算   模型的预测值 pred和损失 loss,将预测值 pred 和目标值 y 传递给损失函数 criterion。进行反向传播,通过调用 loss.backward() 来计算梯度。调用 optimizer.step() 来执行一步梯度下降,更新模型的参数。进行一步梯度下降后,再次计算预测值 pred 和损失 loss。

用法3:NumPy 数组和 PyTorch 张量转换

x = np.array([[1, 2], [3, 4]])
y = torch.from_numpy(x)
z = y.numpy()

创建了一个 2x2 的 NumPy 数组 x。使用 torch.from_numpy()函数将 NumPy 数组转换为 PyTorch 张量 y。现在,y 是一个 PyTorch 张量,与原始的 NumPy 数组 x 共享相同的数据存储,因此对 y 的修改会反映在 x 上。也可以使用 y.numpy() 方法将 PyTorch 张量转换回 NumPy 数组 。

用法4:构建数据集和加载数据(以CIFAR10数据集为例)

train_dataset = torchvision.datasets.CIFAR10(root=r'path',
                                             train=True, 
                                             transform=transforms.ToTensor(),
                                             download=True)

image, label = train_dataset[0]
train_loader = torch.utils.data.DataLoader(dataset=train_dataset,
                                           batch_size=64, 
                                           shuffle=True)

data_iter = iter(train_loader)
images, labels = data_iter.next()
for images, labels in train_loader:
    # Training code
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

30天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
OSZAR »