深度学习学习笔记

第二周

  1. 当你将这个向量加上这个实数时,Python 自动把这个实数 𝑏 扩展成一个 1 × 𝑚 的行向量。
    所以这种情况下的操作似乎有点不可思议,它在 Python 中被称作广播(brosdcasting)
  2. numpy中(n,)与(n,1)的区别
if
a.shape=(n,)
b.shape=(n,)
then
a*b转置和b转置*a都是一个数
if
a.shape=(n,1)
b.shape=(n,1)
和线代计算规则一样了
  1. 纬度,轴,秩
    a=[1,2,3]:一维
    b=[[1,2,3],[1,2,3]]:二维
    c=[ [ [1,2,3],[1,2,3] ] , [ [1,2,3],[1,2,3] ] , [ [1,2,3],[1,2,3] ]]:三维
    轴:对于二维来说,行是axis0,列是axis1,三维那个竖着的是axis0
    a.shape=(2,3)
    b.shape=(3,2,3):3层,每层2行3列

第三周 浅层神经网络

常用激活函数

sigmoid,tanh,Relu,leaky relu

  1. 在讨论优化算法时,有一点要说明:我基本已经不用 sigmoid 激活函数了,tanh 函数在所有场合都优于 sigmoid 函数。但有一个例外:在二分类的问题中,对于输出层,因为𝑦的值是 0 或 1,所以想让𝑦^的数值介于 0 和 1 之间,而不是在-1 和+1 之间。所以需要使用 sigmoid 激活函数。
  2. relu函数在大于0时,是线性的,在小于0时也是线性的,但是整体是非线性的
  3. 在实践中,使用 ReLu 激活函数神经网络通常会比使用 sigmoid 或者 tanh 激活函数学习的更快。
  4. 总结

sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
tanh 激活函数:tanh 是非常优秀的,几乎适合所有场合。
ReLu 激活函数:最常用的默认函数,,如果不确定用哪个激活函数,就使用 ReLu 或者Leaky ReLu。

第四周 深层神经网路

偏差,方差

高方差:

  1. 特点:训练集err%低,验证集err%高,过拟合的
  2. 解决方法:
    1. 正则化
    2. 准备更多数据
      低方差:
      训练集err%高
      验证集err%高(和训练集的差不多)
      欠拟合的

第四门 卷积神经网络

padding

  1. valid卷积:不填充
    有一个𝑛 × 𝑛的图像,用一个𝑓 × 𝑓的过滤器
    卷积,它将会给你一个(𝑛 − 𝑓 + 1) × (𝑛 − 𝑓 + 1)维的输出
  2. same卷积:填充,使卷积后的和原图一样大
    根据这个公式𝑛 − 𝑓 + 1,当你填充𝑝个像素点,𝑛就变成了𝑛 + 2𝑝,最后公式变为𝑛 + 2𝑝 − 𝑓 + 1。因此如果你有一个𝑛 × 𝑛的图像,用𝑝个像素填充边缘,输出的大小就是这样的(𝑛 + 2𝑝 − 𝑓 + 1) × (𝑛 + 2𝑝 − 𝑓 + 1)。如果你想让𝑛 + 2𝑝 − 𝑓 + 1 = 𝑛的话,使得输出和输入大小相等,如果你用这个等式求解𝑝,那么𝑝 = (𝑓 − 1)/2
  3. 习惯上,计算机视觉中,𝑓通常是奇数
  4. 输出计算

fxf的过滤器,nxn的图像,步长s,padding为p,输出为(n+2p-f)/s+1 x (n+2p-f)/s+1:向下取整