pytorch入门(七)机器学习基础

机器学习的基本任务

一般分为四大类:监督学习、无监督学习、半监督学习、强化学习。

监督学习
无监督学习
半监督学习
强化学习
机器学习
定义:使用已知的正确示例来训练模型
定义:在无标签的数据集中查找规则的模型
定义:结合分类聚类的思想生成新模型
定义:对没有标注的数据集,但是知道是否接近目标来构建模型

模型的选择及损失函数

问题分类最后一层激活函数损失函数
二分类,单标签添加sigmoid层nn.BCELoss
二分类,单标签不添加sigmoid层nn.BCEWithLogitsLoss
二分类,多标签nn.SoftMarginLoss
多分类 ,单标签不添加softmax层nn.CrossEntroptLoss
多分类 ,单标签添加softmax层nn.NLLLoss
多分类,多标签nn.MulitiLabelSoftMarginLoss
回归nn.MSELoss
识别nn.TripleMarginLoss
识别CosineEmbeddingLoss

评估及优化

  • 留出法(Holdout):留出法的步骤相对简单,直接将数据集划分为两个互斥的集合,其中一个作为训练集,另一个作为测试集。在模型训练集训练出模型后,用测试集来评估测试误差,作为泛化误差。
  • K折交叉验证:不停的随机将训练数据集划分为k个,其中k-1个用于模型训练,剩余一个用于测试。
  • 重复的K折交叉验证:当数据量较小,数据分布很不均匀时可以采用这种方法。使用训练数据构建模型后,通常使用测试数据对模型进行测试,测试模型对数据的适应情况,如果使用测试数据对模型测试满意,就用此模型对以后的数据进行预测,如果结果不满意,可以优化模型。

过拟合与欠拟合

在模型训练过程中,经常会出现刚开始训练时,训练和测试的精度往往不高(或损失值大),然后通过迭代次数优化,训练精度和测试精度会继续提升。但随着我们训练迭代次数的增加或不断优化,也有可能出现训练精度或损失值继续改善,但测试精度或损失值不降反升的情况。
在这里插入图片描述
解决方法:

  • 权重正则化
  • Dropout
  • 批量正则化
  • 权重初始化

GPU加速

单GPU加速

查看GPU配置:nvidia-smi
查看可以使用的GPU数量:torch.cuda.device_count()
查看GPU是否可用:torch.cuda.is_available()
把数据从内存移动到GPU,一般针对张量(需要的数据)和模型。对张量,一律使用方法.to(device)或.cuda()

import torch
# 方法一
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
# 方法二
device = torch.device('cuda')


# 使用方法进行封装
def get_device():
    return 'cuda' if torch.cuda.is_available() else 'cpu'


device = get_device()
print(device)

多GPU加速

  • 使用全部GPU
    使用时直接用model传入torch.nn.DataParallel()函数即可
    torch.nn.DataParallel(model)
  • 使用部分GPU
    假设电脑有多块GPU,只想利用一部分,如果只想使用编号为0,1,3,4的4块GPU采用下面的方式。
device_ids = [0, 1, 2, 3, 4]
# 对数据
input_data = input_data.to(device=device_ids)
# 对模型
net = torch.nn.DataParallel(model)
net.to(device)

或者

os.environ['CUDA_VISIBLE_DEVICES'] = ','.join(map(str, [0,1,3,4]))
net = torch.nn.DataParallel(model)

使用GPU注意事项

  1. GPU的数量尽可能为偶数,奇数的GPU可能出现异常中断
  2. 数据量较小的时候,单GPU比多GPU快
  3. 如果内存不够大,使用多GPU训练可设置pin_memory为False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啊~小 l i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值