WDK李宏毅学习笔记第二周02_Why Deep Learning

1. Why Deep Learning?

当使用参数相等时,构建多层Neurals比一层Neural准确率更高,如下图:
在这里插入图片描述
因为Deep -> Modularization,在training data时,Deep Learning会自动构建模组化的函数。
模组化函数是会在Training data时机器自己构建,不需要人为去设计,这很大的提高了效率。
在这里插入图片描述
在做复杂的数据转换时,模组化函数效果显著,例如:从下面第一组图片上看,两者很像,但是实际却完全不一样,第二组图片,看起来不一样,实际上一样,要让机器知道这些,简单个Neural很难完成这个任务,只有构建多层的Neurals,构建模组化函数,才能有效的解决这个问题。为什么有效? 我个人认为模组化函数,一层一层的分工,即使输入很像/差距较大,经过模组化函数处理后,会放大差异/放大联系,这中间过程很复杂,但其实机器会自己找到最合适的函数,这些复杂的函数不需要人为构造,我们只需设计合适的Neural network,这也是Deep Learning的优势所在。
在这里插入图片描述

1.1 自建Deep Learning网络练习

建立模型,并用下图数据验证模型的正确性,所以在模型中设置默认参数w,b,和下图一样,并输入同样的x的值,观察输出结果,判断模型的正确性。
在这里插入图片描述

#不调用ipython构建深度学习网络的库函数,自建深度学习网络1.0版——————————————————————————————————————————————————————————
import numpy as np
#输入X,w,b的值,然后计算输出后的值Z,返回用sigmoid(Z)转换后的值y(n行矩阵)
def Deep_Neetwork(x1,x2,w,b):
    x = np.array([[x1],[x2]])
    z = np.dot(w,x) + b
    y = 1 /(1+np.e**(-z))
    return z,y

#输入初始X值和需要建立Deep learning网络层数n,返回用来存放各层z,y,w,b的值的数组
def Deep_layers(x1_input,x2_input,n):
    z_shuzu = ([0]*n) #用在存储各个输出端z的值的数组
    y_shuzu = ([0]*(n+1)) #用在存储各个输出端y的值的数组
    w = ([0]*n) #用来存储每一层参数w矩阵的数组
    b = ([0]*n) #用来存储每一层参数b矩阵的数组
    
    #———为了验证模型正确性所以设置了和李宏毅老师给的模型同样的参数————
    w[0] = np.array([[1,-2],[-1,1]]) #给第1层参数w赋予初值
    w[1] = np.array([[2,-1],[-2,-1]]) #给第2层参数w赋予初值
    w[2] = np.array([[3,-1],[-1,4]])#给第3层参数w赋予初值
    b[0] = np.array([[1],[0]]) #给第1层参数b赋予初值
    b[1] = np.array([[0],[0]]) #给第2层参数b赋予初值
    b[2] = np.array([[-2],[2]])#给第3层参数b赋予初值
    #———验证正确后可以删除以上程序,将令下面num = 0,直接批量给定初值———
    num = 3
    # 给每一次的w,b赋初值
    while num < n:
        w[num] = np.array([[1,-2],[-1,1]])
        b[num] = np.array([[1],[0]])
        num += 1
    #——————————————-——-———————————————————
    #得到第0层的输出值,也就是初始输入值
    y_shuzu[0] = np.array([[x1_input],[x2_input]])
    i = 1
    #建立网络结构,总共建立n层
    while i <= n:
        z_shuzu[i-1],y_shuzu[i] = Deep_Neetwork( y_shuzu[i-1][0,0], y_shuzu[i-1][1,0], w[i-1], b[i-1])
        i += 1
    return z_shuzu,y_shuzu,w,b  
#——————————————————————————————————————————————————————————————
z,y,w,b = Deep_layers(1,-1,3)
print(y) #输出y和李宏毅教授给定的数据做对比,判断模型是否正确。

运行结果:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值