李宏毅《机器学习》(DL方向)阶段性总结

12 篇文章 0 订阅
5 篇文章 0 订阅

Datawhale202211——李宏毅《机器学习》DL总结



前言

李宏毅机器学习的组队学习告一段落,接下来我们对最近的内容做一期总结,承上启下,后面接着好好干!本文提供一个应用示例,用的数据集是fashion-mnist。


一、系列文章指路

原创

ML/DL入门介绍(底层理解+基本概念)
ML/DL入门介绍——回归
误差与梯度下降(李宏毅《机器学习》)
深度学习入门—反向传播
神经网络训练技巧—“神经网络训练不起来怎么办”(李宏毅《机器学习》<深度学习向>)
CNN入门全面介绍(李宏毅《机器学习》<深度学习方向>)

队友创(@晨哥是个好演员)

回归模型介绍
神经网络训练不起来,怎么办?
卷积神经网络

二、重要知识点

梯度下降

损失函数

反向传播

CNN

三、实例实战(fashion-mnist演示)

1.知识回顾

1)Module类是torch.nn里提供的应该模型构造类,是用于构造所有神经网网络模块的积累,其他模型的搭建可以通过继承它。
2)它提供三种定义方式,分别是Sequential、ModuleList、ModuleDict。

2.三种定义方式+代码示例

(在进行代码演示前,需要引入需要的库)

import os
import numpy as np
import collections
import torch
import torch.nn as nn
import torch.nn.functional as F
import torchvision

1)Sequential(nn.Sequential())
模型在进行前向计算时通过简单串联各个层,Sequential通过更为简单的方式定义模型。接收一个模块的OrderedDict或一系列模块作为参数来注意添加Module的示例,模型的前向计算就是在按序计算这些示例,代码演示如下:

直接排列

import torch.nn as nn
net1=nn.Sequential(
   nn.Linear(784,256),
   nn.ReLU(),    
   nn.Linear(256,10),
      )
   print(net1)
 #结果
 Sequential(
  (0): Linear(in_features=784, out_features=256, bias=True)
  (1): ReLU()
  (2): Linear(in_features=256, out_features=10, bias=True))
  #利用OrderedDict
  import collections
  import torch.nn as nn
  net2=nn.Sequential(collections.OrderedDict([
   ('fcl',nn.Linear(784,256)),('relu1',nn.ReLU()),       ('fc2',nn.Linear(256,10))
   ]))
   print(net2)
  #结果
  Sequential(
  (fcl): Linear(in_features=784, out_features=256, bias=True)
  (relu1): ReLU()
  (fc2): Linear(in_features=256, out_features=10, bias=True)
  )

2)ModuleList(nn.ModuleList())

ModuleList接受一个子模块的列表作为输入,因此可以进行append和extend的操作,同时,子模块或层的权重也会自动添加到网络中。

net3=nn.ModuleList([nn.Linear(784,256),nn.ReLU()])
net3.append(nn.Linear(256,10))
print(net3[-1])
print(net3)
Linear(in_features=256, out_features=10, bias=True)
ModuleList(
 (0): Linear(in_features=784, out_features=256, bias=True)
 (1): ReLU()
 (2): Linear(in_features=256, out_features=10, bias=True)
 )

需要注意的时,ModuleList并不能提供示例,只是简单地把各模块组合在一起,使用它来进行模型实例化需要进行以下操作,否则会报错

(NotImplementedError)
class Net3(nn.Module):
   def __init__(self):
          super().__init__()
                 self.modulelist=nn.ModuleList([nn.Linear(784,256),nn.ReLU()])      self.modulelist.append(nn.Linear(256,10))    
   def forward(self,x):   
           for layer in self.modulelist:    
             x=layer(x)     
            return xnet3_=Net3()
            out3_=net3_(a)
            print(out3_.shape)

3)ModuleDict(nn.ModuleDict())

ModuleDict和ModuleList类似,前者可以更好地为各层添加名称有助于大模型的实现。

net4=nn.ModuleDict({
'linear':nn.Linear(784,256), 'act':nn.ReLU(),
})
net4['output']=nn.Linear(256,10)print(net4['linear'])
print(net4.output)

四、参考文档

来自Datawhale的投喂

李宏毅《机器学习》开源内容1:
https://linklearner.com/datawhale-homepage/#/learn/detail/93
李宏毅《机器学习》开源内容2:
https://github.com/datawhalechina/leeml-notes
李宏毅《机器学习》开源内容3:
https://gitee.com/datawhalechina/leeml-notes

来自官方的投喂

李宏毅《机器学习》官方地址
http://speech.ee.ntu.edu.tw/~tlkagk/courses.html
李沐《动手学深度学习》官方地址
https://zh-v2.d2l.ai/


总结

1.这次的组队学习实际上是一个引子,让我看到了经典课程的魅力,任重道远,持续进步!!!
2.感谢Datawhale的组织者们,仍然是一次非常棒的学习体验!!!还有感谢get it 小队成员的互相帮助和支持,坚持下来非常不易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值