PyTorch的各个组件和实战

学习目标:

pytorch的各个组件和实战


学习时间:

截止时间:2022-09-17 3:00


随堂笔记:

神经网络学习机制:数据预处理、模型设计、损失函数和优化方案设计、前向传播、反向传播、更新参数

完成一项机器学习任务的基本步骤

首先对数据进行预处理,最重要的是数据格式的统一和必要的数据变换,同时划分好训练集和测试集。

其次是选择模型,并设定损失函数和优化方法,以及对应的超参数(我们也可以使用sklearn这样的机器学习库中的模型自带的损失函数和优化器)

最后是用模型拟合训练集数据,并在验证集/测试集上计算模型表现


为什么深度学习在数据加载上需要有更加专门的设计?

深度学习所需的样本量很大,一次加载全部数据运行可能会超出内存容量而无法全部实现;
同时还有批训练等提高模型表现的策略,需要每次训练读取固定数量的样本送入模型中进行训练。


PyTorch的各个组件和实战_第1张图片
深度学习在实现上的特殊性:

  • 样本量大,通常需要分批加载(原因看上面)

  • 逐层、模块化搭建网络(卷积层、全联接层、LSTM等)
    深度学习的网络层数很多,同时会有一些用于实现特定功能的层(卷积层、池化层、批正则化层、LSTM层等等)

  • 多样化的损失函数和优化器设计(由于模型设定的灵活性)

  • GPU的使用(GPU用于并行加速的功能,程序默认是在GPU上运行的)

  • 以上模块之间的配合


实战任务:FashionMNIST时装分类
PyTorch的各个组件和实战_第2张图片

导入必要的packages: os, numpy, pandas, torch, torch.nn, torch.optim, torch.utils.data

import os
import numpy as np
import torch
import torch.nn as nn
import torch.utils.data 
import Dataseet,DataLoader
import torch.optim as optimizer

配置训练过程的超参数:batch size, learning rate, max_epochs, num_workers

以下的超参数可以统一设置,方便后续调试时修改:batch size、初始学习率(初始)、训练次数(max_epochs)、GPU配置

batch_size = 16//批次大小
lr = 1e-4//优化器的学习率
max_epochs = 100

配置训练用的硬件设备:CPU or GPU,which GPU(s)

# 方案一:使用os.environ,这种情况如果使用GPU不需要设置
os.environ['CUDA_VISIBLE_DEVICES'] = '0,1'

# 方案二:使用“device”,后续对要使用GPU的变量用.to(device)即可
device = torch.device("cuda:1" if torch.cuda.is_available() else "cpu")

pytorch数据读入是通过dataset+dataloader的方式完成的

dataset定义好数据的格式和数据变换的方式
dataloader用iterative的方式不断读入批次的数据

定义自己的dataset类来实现灵活的数据读取:
PyTorch的各个组件和实战_第3张图片


人工智能得益于卷积神经网络的出现和BP反向传播算法的实现。

pytorch中的神经网络一般是基于module类的模型来实现的

神经网络中常见的层:

  • 不含模型参数的层详细讲解
  • 含模型参数的层详细讲解
  • 二维卷积层详细讲解
  • 池化层详细讲解

你可能感兴趣的:(essay,pytorch,深度学习,机器学习)