fastai lesson11 notebook调试学习笔记

一、LSUV 简单的初始化技术

 

1.1 fan_out的等价用法 

w1的初始化,等价于下面一行用kaiming_uniform的初始化 

 1.2 torch自带初始化 方差越来越小

 

1.3 不同初始化对网络训练的影响

 用torch默认参数初始化,训练2个epoch,得到的acc,valid比较高。

nfs = [8,16,32,64,64]
learn,run = get_learn_run(nfs, data, 0.6, ConvLayer, cbs=cbfs)

run.fit(2, learn) 
train: [1.73625, tensor(0.3975, device='cuda:0')] 
valid: [1.68747265625, tensor(0.5652, device='cuda:0')] 
train: [0.356792578125, tensor(0.8880, device='cuda:0')] 
valid: [0.13243565673828125, tensor(0.9588, device='cuda:0')]

看起来训练是正常的。但是我们加入Hooks,看一下直方图的样子

  • 四个卷积的激活元的值的分布直方图如下所示。
  • 统计激活元为0的比例,发现第一层40%的激活元为0,第2~4层,90%的激活元都为0.
  • 虽然acc很高,但是网络大部分激活元都没有利用起来!

 进过LSUV初始化之后

for m in mods: print(lsuv_module(m, xb))
run.fit(2, learn)

网络的非零元少了很多! 

前面我看到如果前面的几个 batch 我们没有很好的初始化 ,我们最终有90%的激活元
都为0,即激活元处于非活动状态 。这就是我们想要 LSUV 的原因。

二、imagenette数据集

  • 您的领域中擅长使用深度学习的很大一部分是知道如何创建类似小而实用的有用数据集
  • Jeremy使用这两个数据集比Jeremy做过的任何其他事情更深入地了解计算机 视觉模型训练

三、datablock API

- get_image_files:获取所有的文件路径。fnames,就是file of names。所有的绝对路径
- ImageDataBunch
  - 调用ImageDataBunch的构造函数和from_name_re
    - from_name_func
    - src=ImageList.split_by_rand_pct()————(ImageList(ItemList)
      - 重新构建了一个ItemList的trainset和validset
  - 马上调用ItemList的

下面是函数关系调用图:

 Pets数据集在分割验证集和训练集时,是随机比例分配的。所以接口有一点点不一样。

使用fastai库来读取Pets数据集的函数关系调用图:

 四、新的CNN模型

 五、Optimizer重构

 

待续……


08_data_block.ipynb

 

  见深度学习500问:batchsize

google colab运行fastai course-v3笔记本_hello world-CSDN博客

 

 1.4 代码 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值