1-4李宏毅2021春季机器学习教程-pytorch教学-助教许湛然(代码片段)

双木的木 双木的木     2023-01-28     191

关键词:

1-3 李宏毅2021春季机器学习教程-Google Colab教学-助教许湛然介绍了Colab的使用,这篇文章是助教许湛然关于PyTorch框架的简要讲解。

更多操作查看: https://pytorch.org/docs/stable/tensors.html

目录

Prerequisites-准备工作

What is PyTorch?-什么是pytorch?

 PyTorch v.s. TensorFlow

 Overview of the DNN Training Procedure

Tensor

Tensor -- Data Type

Tensor -- Shape of Tensors

Tensor -- Constructor

​​Tensor -- Operators

Tensor -- PyTorch v.s. NumPy

Tensor -- Device

 Tensor -- Device(GPU)​

How to Calculate Gradient?

Load Data

 Dataset & Dataloader

Define Neural Network

torch.nn -- Neural Network Layers

​​torch.nn -- Activation Functions

Loss Function

 torch.nn -- Loss Functions

torch.nn -- Build your own neural network

Optimizer

torch.optim

Neural Network Training

前期准备

多次epoch

Neural Network Evaluation (Validation Set)

Neural Network Evaluation (Testing Set)

Save/Load a Neural Network

More About PyTorch

Reference


Prerequisites-准备工作

熟悉python3的有关知识:if-else, loop等;熟悉numpy,了解数组等操作。

What is PyTorch?-什么是pytorch?

  • 开源的机器学习框架
  • 提供两个高水平特征的python库

 PyTorch v.s. TensorFlow

 Overview of the DNN Training Procedure

Tensor

Tensor -- Data Type

ref: torch.Tensor — PyTorch 1.9.1 documentation

Tensor -- Shape of Tensors

Tensor -- Constructor

Tensor -- Operators

squeeze():主要对数据的维度的进行压缩,去掉维数为1的维度,例如一行或者一列这种,维度为(1,3)的一行三列去掉第一个维数为一的维度之后就变成(3)行。有三种形式:①squeeze(a)就是将a中所有为1的维度删掉,不为1的维度没有影响。②a.squeeze(N) 就是去掉a中指定的维数为一的维度。③还有一种形式就是b=torch.squeeze(a,N),去掉a中指定的定的维数为一的维度。

unsqueeze():主要对数据维度进行填充。给指定位置加上维数为一的维度,例如有个三行的数据(3),在0的位置加了一维就变成一行三列(1,3)。

transpose():交换矩阵的两个维度,transpose(dim0, dim1) → Tensor,其和torch.transpose()函数作用一样。

cat():拼接函数。在给定维度上对输入的张量序列seq 进行连接操作。torch.cat()可以看做 torch.split() 和 torch.chunk()的反操作。

 

 

 

 

more operators: torch.Tensor — PyTorch 1.9.1 documentation

Tensor -- PyTorch v.s. NumPy

ref: https://github.com/wkentaro/pytorch-for-numpy-users

Tensor -- Device

 Tensor -- Device(GPU)​​​​​​

上图的链接如下:

https://towardsdatascience.com/what-is-a-gpu-and-do-you-need-one-in-deep-learning-718b9597aa0d

How to Calculate Gradient?

Load Data

 Dataset & Dataloader

 注意shuffle参数,在train时为True,在test时为False:

Define Neural Network

torch.nn -- Neural Network Layers

 矩阵与向量表示:

 代码如下:

​torch.nn -- Activation Functions

Loss Function

 torch.nn -- Loss Functions

  • Mean Squared Error (for linear regression)回归

nn.MSELoss()

  • Cross Entropy (for classification)分类

nn.CrossEntropyLoss()

torch.nn -- Build your own neural network

 代码:

import torch.nn as nn 
class MyModel(nn.Module): 
    def __init__(self): 
        super(MyModel, self).__init__() 
        self.net = nn.Sequential( 
            nn.Linear(10, 32), 
            nn.Sigmoid(), 
            nn.Linear(32, 1) 
        ) 
    def forward(self, x): 
        return self.net(x)

Optimizer

torch.optim

代码:

torch.optim.SGD(params,lr,momentum = 0)

Neural Network Training

前期准备

 代码如下:

dataset = MyDataset(file) 
tr_set = DataLoader(dataset, 16, shuffle=True) 
model = MyModel().to(device) 
criterion = nn.MSELoss() 
optimizer = torch.optim.SGD(model.parameters(), 0.1)

多次epoch

代码如下:

for epoch in range(n_epochs): 
    model.train() 
    for x, y in tr_set: 
        optimizer.zero_grad() 
        x, y = x.to(device), y.to(device) 
        pred = model(x) 
        loss = criterion(pred, y) 
        loss.backward() 
        optimizer.step()

Neural Network Evaluation (Validation Set)

代码如下:

model.eval() 
total_loss = 0 
for x, y in dv_set: 
    x, y = x.to(device), y.to(device) 
    with torch.no_grad():#不希望进行梯度计算 
        pred = model(x) 
        loss = criterion(pred, y) 
        total_loss += loss.cpu().item() * len(x) 
        avg_loss = total_loss / len(dv_set.dataset)

Neural Network Evaluation (Testing Set)

代码如下:

model.eval() 
preds = [] 
for x in tt_set: 
    x = x.to(device) 
    with torch.no_grad(): 
    pred = model(x) 
    preds.append(pred.cpu())

Save/Load a Neural Network

代码如下:

#Save 
torch.save(model.state_dict(), path) 
# Load 
ckpt = torch.load(path) 
model.load_state_dict(ckpt)

More About PyTorch

  • torchaudio

        speech/audio processing

  • torchtext

        natural language processing

  • torchvision

        computer vision

  • skorch

        scikit-learn + pyTorch

  • Useful github repositories using PyTorch
    • Huggingface Transformers (transformer models: BERT, GPT, ...)
    • Fairseq (sequence modeling for NLP & speech)
    • ESPnet (speech recognition, translation, synthesis, ...)
    • Many implementation of papers
    • ...

Reference

PyTorch

GitHub - pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration

GitHub - wkentaro/pytorch-for-numpy-users: PyTorch for Numpy users. https://pytorch-for-numpy-users.wkentaro.com

Pytorch vs. TensorFlow: What You Need to Know | Udacity

https://www.tensorflow.org/

NumPy

说明:记录学习笔记,如果错误欢迎指正!写文章不易,转载请联系我。

《2021机器学习-李宏毅》学习笔记

文章目录简介内容示意个人学习笔记01-Regression02.1-deeplearning-general_guidance02.2-deeplearning-类神经网络优化技巧02.3-deeplearning-loss_of_classification03-CNN04-Self-attention05-Transformer06-Generative_Model(GAN)07-Self-S 查看详情

视频+ppt2021年李宏毅版40节机器学习课程已更新完毕,推荐收藏!

提起李宏毅老师,熟悉机器学习的读者朋友一定不会陌生。最典型的就是开局一言不合就“宝可梦”。李宏毅老师幽默风趣的教学风格也吸引力很多机器学习爱好者。李宏毅老师,是宝岛台湾大学电机工程系教授,他... 查看详情

深度学习李宏毅《机器学习》学习笔记

【深度学习】李宏毅《机器学习》学习笔记2021年8月16日P1-P2节-机器学习介绍和为什么要学习机器学习1950年,人工智能就出现了好厉害~~机器学习中包含了深度学习。早期的人工智能其实都是想当于给河狸装上一个先天的本能... 查看详情

台大李宏毅《机器学习》2021课程撒花完结!除了视频ppt,还有人汇编了一本答疑书...

...迷路机器之心报道今年2月末,「精灵宝可梦大师」李宏毅的《机器学习》最新一期课程正式开课。对于想要入门机器学习的同学来说,这是一门不容错过的经典课程,视频、PPT等资料都可以在课程页面找到,而且... 查看详情

学习笔记李宏毅2021春机器学习课程第5.1节:transformer

文章目录1序列到序列的模型2Seq2seqmodel常见的应用场景2.1聊天机器人2.2问题回答(QA)2.3文法剖析2.4多标签分类2.5对象检测3Seq2seqmodel的整体架构4编码器的具体架构1序列到序列的模型Transformer本质上就是一个Sequence-to-sequence的model࿰... 查看详情

李宏毅机器学习笔记:1.机器学习介绍(代码片段)

文章目录P1:机器学习介绍1.1人工智能、机器学习、深度学习关系1.2实现途径1.3实现方法1.4总结P2:我们为什么需要学习机器学习#Time:2021.08.23#内容:P1~P2P1:机器学习介绍1.1人工智能、机器学习、深度学习关系①什么是人工智能&#x... 查看详情

李宏毅《机器学习》丨7.conclusion(总结)

Author:AXYZdong李宏毅《机器学习》系列参考视频地址:https://www.bilibili.com/video/BV1Ht411g7Ef参考文档:DataWhale文档六个Task李宏毅机器学习丨1.Introductionofthiscourse(机器学习介绍)李宏毅机器学习丨2.Regressionÿ 查看详情

李宏毅《机器学习》丨7.conclusion(总结)

Author:AXYZdong李宏毅《机器学习》系列参考视频地址:https://www.bilibili.com/video/BV1Ht411g7Ef参考文档:DataWhale文档六个Task李宏毅机器学习丨1.Introductionofthiscourse(机器学习介绍)李宏毅机器学习丨2.Regressionÿ 查看详情

台湾李宏毅老师-机器学习

参考网址:http://blog.csdn.net/youyuyixiu/article/details/53886092国立台湾大学电机工程学系助理教授–李宏毅 研究领域:机器学习、深度学习、语义理解、语音辨识 个人主页 课程名称:MachineLearningandhavingitdeepandstructured 查看详情

李宏毅机器学习2021卷积神经网络hw3-imageclassification(更新ing)(代码片段)

学习心得(1)回顾【李宏毅机器学习CP21】(task6)卷积神经网络,CNN强大在于卷积层强大的特征提取能力,当然我们可以利用CNN将特征提取出来后,用全连接层或决策树、支持向量机等各种机器学习算法模型来... 查看详情

学习笔记李宏毅2021春机器学习课程第7.2节:自监督学习

文章目录1为什么BERT有用?2多语言的BERT2.1跨语言的阅读理解2.2跨语言对齐1为什么BERT有用?最常见的解释是,当输入一串文本时,每个文本都有一个对应的向量。对于这个向量,我们称之为embedding。它的特别之处在于... 查看详情

李宏毅《机器学习》丨1.introductionofthiscourse(机器学习介绍)

Author:AXYZdong李宏毅《机器学习》系列参考视频地址:https://www.bilibili.com/video/BV1Ht411g7Ef参考文档:DataWhale文档文章目录一、人工智能、机器学习和深度学习二、机器学习(MachineLearning)三、机器学习相关的技... 查看详情

李宏毅机器学习-0introduction

MLLecture0:IntroductionofMachineLearningAIv.s.MLv.s.DLArtificialintelligence->objectiveMachinelearning->methodsDeeplearning->onemethodofmachinelearningHand-craftedrulesmany"ifs"hardtoconsider 查看详情

李宏毅机器学习课程知识点总结

开发者涨薪指南48位大咖的思考法则、工作方式、逻辑体系 查看详情

李宏毅机器学习机器学习介绍

一.机器学习介绍1.机器学习介绍以前的人工智慧完全是依靠人制定的规则行事,而机器学习相比增加自主学习即自己制定规则的能力。怎么做到呢?就是通过提供给他的资料,学习出来一个function。2.机器学习想关的... 查看详情

台大李宏毅《机器学习》2021课程撒花完结!除了视频ppt,还有人汇编了一本答疑书...

...迷路机器之心报道今年2月末,「精灵宝可梦大师」李宏毅的《机器学习》最新一期课程正式开课。对于想要入门机器学习的同学来说,这是一门不容错过的经典课程,视频、PPT等资料都可以在课程页面找到,而且... 查看详情

李宏毅机器学习回归

1.FunctionwithUnknownParameters第一个步骤是我们要写出一个,带有未知参数的函式,简单来说就是我们先猜测一下,我们打算找的这个函式F,它的数学式到底长什麼样子。举例来说,我们这边先做一个最初步的猜测,我们写成这个样子2.DefineLo... 查看详情

李宏毅《机器学习》丨4.deeplearning(深度学习)

Author:AXYZdong李宏毅《机器学习》系列参考视频地址:https://www.bilibili.com/video/BV1Ht411g7Ef参考文档:DataWhale文档文章目录一、深度学习发展历史二、深度学习三个步骤2.1Step1:神经网络(Neuralnetwork)2.2Step2... 查看详情