唐宇迪深度学习课程上篇——动手完成简单的神经网络

Posted 深度学习1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了唐宇迪深度学习课程上篇——动手完成简单的神经网络相关的知识,希望对你有一定的参考价值。


#coding:utf-8
‘‘‘
Created on 2017年7月21日

@author: KLKJ
‘‘‘
import numpy as np
def sigmoid(x,deriv=False): #定义激活函数,deriv=False时进行前向传播的运算,deriv=True进行反向传播的运算
    if deriv == True:
        return x*(1-x)##这里x=1/(1+exp(-x)),是sigmoid函数求导后的结果
    return 1/(1+np.exp(-x))

x = np.array([[0,0,1],
              [0,1,1],
              [1,0,1],
              [1,1,1],
              [0,0,1]]
             ) #输入5个样本,每个样本三个特征值
y = np.array([[0],
              [1],
              [1],
              [0],
              [0]]) #期望输出得分
np.random.seed(1)#随机种子

w0 = 2 * np.random.random((3,4))-1 #w0的维数与样本特征与神经元的个数有关,random初始化的值在(0,1)的半开区间内,让w0的值在(-1.+1)区间上
w1 = 2 * np.random.random((4,1))-1
print w0#查看w0的值

for j in xrange(60000): #迭代六万次
    l0 = x  #将x的值给l0,l0为输入层
    l1 = sigmoid(np.dot(l0,w0)) #中间层经过第一层后的得分
    l2 = sigmoid(np.dot(l1,w1)) #输出层的得分
    l2_error = y - l2 #输出层的得分与期望形式得分的差异
    if(j%10000) == 0:
        print Error+str(np.mean(np.abs(l2_error)))#每经过一万次迭代输出一次差异值的平均值,以便观察差异值是否减小
    l2_delta = l2_error * sigmoid(l2,deriv=True)#w1对错误的贡献
    l1_error = l2_delta.dot(w1.T)#反向传播根据12_delta得出
    l1_delta = l1_error * sigmoid(l1,deriv=True)#w0对错误的贡献
   
    w1 += l1.T.dot(l2_delta) #根据反馈过来的结果对w1进行调节
    w0 += l0.T.dot(l1_delta) #根据反馈过来的结果对w0进行调节

 


以上是关于唐宇迪深度学习课程上篇——动手完成简单的神经网络的主要内容,如果未能解决你的问题,请参考以下文章

PK2030-唐宇迪深度学习框架-Tensorflow案例实战视频课程

唐宇迪-人工智能学习路线(下篇)

唐宇迪老师现场剖析深度学习——免费公开课招募啦~~~

唐宇迪-人工智能学习路线(上篇)

CP1621-唐宇迪-python数据分析与机器实战

『七月直播』人工智能第一场——人工智能学习与发展路线规划唐宇迪老师