12、深度学习-自学之路-红绿灯机器学习的程序展示

这个其实就是我的《1、深度学习-带你理解深度学习的基础原理。没有复杂的公式,只有大白话。同时也是深入学习的心法》举例的红绿灯的升级版,我在《1、深度学习-带你理解深度学习的基础原理。没有复杂的公式,只有大白话。同时也是深入学习的心法。

》只有红灯和绿灯两个灯,但是在这个程序里面有三个灯。但是基础原理都是一样的。

import numpy as np

weights = np.array([0.5,0.48,0.7]) #随机设置权重值,对应的红灯,绿灯,黄灯的初始权重。

'''

streetlights = np.array([[1,0,1],

                        [0,1,1],

                        [0,0,1],

                        [1,1,1],

                        [0,1,1],

                        [1,0,1]])

'''

streetlights = np.array([ 

    [1,0,1],  #红灯亮,绿灯灭,黄灯亮。 对应的真实值是0,此时是禁止行走的状态。

    [0,1,1],  #红灯灭,绿灯亮,黄灯亮。 对应的真实值是1,此时是可以行走的状态。

    [0,0,1]])  #红灯灭,绿灯灭,黄灯亮。 对应的真实值是0,此时是禁止行走的状态。



#灯的状态,输入值。具体的数据,你们也可以按照自己的想法再设置,这个就和规则一样,你给它一个规#则,它按照你给的规则训练就对了。如果你给的规则是红灯亮了,可以同行,绿灯亮了禁止通行,它也会#按照你的规则来做。因为它就是根据你给的规则,学习这个规则。



#walk_vs_stop = np.array([0,1,0,1,1,0])

walk_vs_stop = np.array([0,1,0]) #是否通行的真实数据值。



input = streetlights[0]  #把灯的状态赋值给输入值input

goal_prediction = walk_vs_stop[0] #把真实结果赋值给目标预测值。

alpha = 0.1 #设置学习率为0.1

for iteration in range(60): #循环60次计算更新权重。

    error_fo_all_light = 0   #误差值设置为0

    #print("itertion"+str(iteration))

    for row_index in range(len(walk_vs_stop)):  #根据真实数据的个数,来更新权重

        input = streetlights[row_index] #将要计算的数据,赋值给input,方便理解和计算。

        goal_prediction = walk_vs_stop[row_index] #赋值目标预测值也就是真实值



        prediction = input.dot(weights)#计算预测值

        #print("input"+str(input))

        #print("weight:"+str(weights))



        error = (goal_prediction - prediction)**2 #计算误差值最小二乘法

        #print("error:"+str(error))

        delta =  prediction - goal_prediction  #计算梯度

        error_fo_all_light +=error #误差值累计



        weights = weights - (alpha*input*delta)  #更新权重

        #print("prediction:"+str(prediction))

    print("error"+str(error_fo_all_light)+"\n")



#代入权重进行测试使用

streetlights = np.array(

    [0,1,0])   #测试使用,此时的红绿灯的亮灭状态为:红灯灭,绿灯亮。黄灯灭。

input = streetlights  #把输入的灯的状态值给input

layer_1 = input.dot(weights)#使用已经训练好的权重,对输入的值就行预测。

print("text_layer_1"+str(layer_1))输出预测的值。
 
运行结果为:
error1.7730759999999999
 
error1.004538871316
 
error0.6220576534720047
 
error0.41905749371168344
 
error0.30236992404325447
 
error0.22931386622553274
 
error0.17984884824760355
 
error0.1442044337990159
 
error0.11735362575191485
 
error0.09652232049172713
 
error0.08005176441098516
 
error0.06686809827192935
 
error0.05622712152920667
 
error0.047585794545122045
 
error0.04053349836271996
 
error0.034752467517068945
 
error0.029993175689467418
 
error0.026057884297282802
 
error0.022788986212112367
 
error0.02006038575270362
 
error0.01777093526238826
 
error0.015839341682790758
 
error0.014200165797068533
 
error0.012800655660299993
 
error0.011598228141400182
 
error0.010558459713943837
 
error0.009653480275693231
 
error0.008860687404521833
 
error0.00816171614170987
 
error0.0075416129372071926
 
error0.006988172926749178
 
error0.00649140799042864
 
error0.006043119593418622
 
error0.005636555615908947
 
error0.005266134529060572
 
error0.0049272235876924135
 
error0.004615960360209798
 
error0.004329109036834427
 
error0.004063944655162531
 
error0.0038181597421838398
 
error0.0035897889616491076
 
error0.003377148228975013
 
error0.0031787854558122594
 
error0.002993440647453897
 
error0.0028200135260298296
 
error0.002657537213028177
 
error0.002505156793815253
 
error0.002362111818681561
 
error0.0022277219808925774
 
error0.00210137536137831
 
error0.0019825187493571423
 
error0.001870649644205947
 
error0.0017653096209487794
 
error0.001666078803597914
 
error0.0015725712402538802
 
error0.001484431013769988
 
error0.0014013289538445408
 
error0.0013229598421723053
 
error0.00124904002300777
 
error0.0011793053481634168
 
text_layer_10.9598417799112918
 
从运行结果可以看出来:经过60次的训练,损失值,也就是预测值和真实值之间的偏差越来越小了。
Error从最初的1.7730759999999999经过60次训练后减小到0.0011793053481634168
说明我们的模型训练时有用的。
同时把我们的输入数据代入后,得到的预测值为:0.9598417799112918非常接近于1,说明我们现在时该行走的状态。
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值