Pytorch进行机器学习的普遍流程

作者学习记录方便查询

很多机器学习模型有各自独特的学习过程,这里只是记录普遍情况。

超参数

在进行训练数据之前将超参数统一放置在代码前部,方便修改。

BATCH_SIZE = 32
lr         = 0.001 # 学习率
epochs     = 1000  # 训练轮数 

数据处理

在进行学习之前需要准备好训练模型所需要的数据,这一步常常使用Dataset或者Tensrodataset构建数据。
Dataset功能比较全面,适用于数据格式比较复杂的时候,建议在这一步就把数据处理成适合模型学习的形式,如果在训练过程中在修改数据容易使梯度断掉。
Dataset处理数据
Tensordataset在处理简单数据时较为快捷,代码量较少。
Tensordataset处理数据
之后Dataloader将处理之后的数据转变为一个迭代器,方便模型进行学习。

class GetData(Dataset):
    def __init__(self, data, label):
		pass
    def __getitem__(self, index):
		pass
    def __len__(self):
        pass
train_data = MyDataset(data_root)# Dataset
train_data = TensorDataset(data, label)# Tensordataset
train_loader = DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True) 

构建模型

在Pytorch框架下,常常继承其中的模块进行模型的构造。

class net(torch.nn.Module):# 继承
    def __init__(...):
        pass
    def forward(self,x):
        pass
MyNet=net(...)# 实例化模型

设置损失函数与优化器

Pytorch下包含很多类型的损失函数与优化器,当训练过程不佳时可以进行更改。损失函数用于评估模型效果,损失值越小表明预测结果与真实结果越接近。优化器目标是让损失值变小。

optimizer=torch.optim.Adam(net.parameters(),lr=lr) #使用Adam优化器,个人觉得这个很好用。
loss_function=torch.nn.MSELoss() #均方差损失函数。

进行训练

做好前置工作就可以进行模型的训练,这个时候已经有了处理好的数据、未训练的模型、设置好的损失函数与优化器。
训练过程中要对全体数据进行多次学习(学习次数是epochs,毕竟比较笨,一次学不会),在每次学习中,模型会对数据进行分块学习(每次学的量是batch_size,毕竟不能一口吃成个胖子一次全部学完)。

loss_steps=np.zeros(epochs)# 用于记录损失值
for epoch in range(epochs):
    for i, (x,y) in enumerate(train_loader): 
        pred = net(x)
        loss = loss_function(pred, y)
        optimizer.zero_grad()# 清除梯度
        loss.backward() # 反向传播
        optimizer.step() # 更新梯度
        loss_steps[epoch]=loss.item()# 记录loss
        running_loss = loss.item()
    print(f"第{epoch}次训练,loss={running_loss}".format(epoch,running_loss))
torch.save(net, 'model.pth')# 保存模型
print('训练成功!')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值