1、Email:谢琼用神经网络解决非线性问题第5章深度学习基于Python语言和Tensorflow平台了解非线性问题、分类问题的概念掌握随机生成训练数据的方法010203target目标学习用神经网络解决二分类问题目 录 导 航1234非线性问题的引入设计对应的神经网络模型准备训练数据训练Contents三好学生问题的引入家长们又凑到一起了,但这次情况不一样了孩子们的总分不知道,仅知道是否评选上三好学生的结果Guess?学校评选三好学生的规则总分总分 =德育分德育分 *60%60%+智育分智育分*30%+体育分体育分 *10%10%家长不知道这两条规则!计算总分的规则仍然是:评选三好学生的标准是
2、:总分总分 9595二分类问题 这是一个典型的分类问题学校一定是以德育分、智育分和体育分三项分数为依据,把学生们分成两类:三好学生和非三好学生,因此,这是一个常见的二分类问题下图是用神经网络简述二分类问题0 代表不是三好学生1 代表是三好学生非线性问题分类问题一般是非线性的可以看出,当总分达到 95 之后,y值有一个跳变,并非线性的(一条直线)此处并非剧透,仅只是示例神经网络解决问题是否有效输出 y 用1或0 代表是否三好学生xAll 代表总分目 录 导 航1234非线性问题的引入设计对应的神经网络模型准备训练数据训练Contents激活函数sigmoid&激活函数是神经网络中主要用于去线性化
3、的函数&sigmoid函数的作用是把参数转换成为0到1之间的一个小数注意收敛速度是很快的,也就是说非0非1的区间很小使用激活函数后的神经网络模型注意在输出结果y前使用sigmoid函数使其保证取值在0、1之间,达到非线性化效果实现该网络模型的代码import tensorflow as tf x=tf.placeholder(dtype=tf.float32)yTrain=tf.placeholder(dtype=tf.float32)w=tf.Variable(tf.zeros(3),dtype=tf.float32)n1=w*x n2=tf.reduce_sum(n1)y=tf.nn.si
4、gmoid(n2)注意sigmoid函数所属的类包及其引用方法目 录 导 航1234非线性问题的引入设计对应的神经网络模型准备训练数据训练Contents小知识 Python中产生随机数 import random random.seed()random.random()0.3738753437264337 r=random.random()*10 print(r)8.536025631145845 ri=int(r)print(ri)8 初始化随机数种子产生一个0,1)范围内的小数通过乘以一个整数,使产生的随机数的范围增大,此处将增大范围为0,10)使用随机训练数据进行训练&为什么要使用随机
5、数据来训练神经网络 并非剧透,用于演示和验证 符合人工收集的规则 满足神经网络大规模训练的需要产生随机训练数据import random random.seed()xData=int(random.random()*101),int(random.random()*101),int(random.random()*101)xAll=xData0*0.6+xData1*0.3+xData2*0.1 if xAll=95:yTrainData=1else:yTrainData=0 print(xData:%s%xData)print(yTrainData:%s%yTrainData)产生一个 0,
6、100 范围内的整数代表某一科分数注意为什么是 101 而不是 100按规则生成总分按规则生成评选结果优化产生的训练数据import random random.seed()xData=int(random.random()*41+60),int(random.random()*41+60),int(random.random()*41+60)xAll=xData0*0.6+xData1*0.3+xData2*0.1 if xAll=95:yTrainData=1else:yTrainData=0 print(xData:%s%xData)产生一个 60,100 范围内的更合理的分数产生更多结
7、果为1的训练数据import random random.seed()xData=int(random.random()*8+93),int(random.random()*8+93),int(random.random()*8+93)xAll=xData0*0.6+xData1*0.3+xData2*0.1 if xAll=95:yTrainData=1else:yTrainData=0 print(xData:%s%xData)产生一个 93,100 范围内的符合三好学生要求的分数目 录 导 航1234非线性问题的引入设计对应的神经网络模型准备训练数据训练Contents观察训练结果Non
8、e,array(96.,99.,93.,dtype=float32),array(1.0,dtype=float32),array(0.33333334,0.33333334,0.33333334,dtype=float32),96.0,1.0,0.0None,array(85.,75.,96.,dtype=float32),array(0.0,dtype=float32),array(0.33333334,0.33333334,0.33333334,dtype=float32),85.333336,1.0,1.0None,array(95.,97.,97.,dtype=float32),ar
9、ray(1.0,dtype=float32),array(0.33333334,0.33333334,0.33333334,dtype=float32),96.333336,1.0,0.0None,array(74.,88.,92.,dtype=float32),array(0.0,dtype=float32),array(0.33333334,0.33333334,0.33333334,dtype=float32),84.666672,1.0,1.0误差并未有明显调整变化增加偏移量b来加速训练w=tf.Variable(tf.zeros(3),dtype=tf.float32)b=tf.Va
10、riable(80,dtype=tf.float32)wn=tf.nn.softmax(w)n1=wn*x n2=tf.reduce_sum(n1)-b y=tf.nn.sigmoid(n2)loss=tf.abs(yTrain-y)偏移量b随意估计一个初始值再次观察训练结果None,array(94.,94.,100.,dtype=float32),array(0.0,dtype=float32),array(0.09731765,-0.0886946,-0.00861635,dtype=float32),80.025467,15.951614,0.99999988,0.99999988No
11、ne,array(76.,88.,66.,dtype=float32),array(0.0,dtype=float32),array(0.09777574,-0.10116865,0.00395925,dtype=float32),80.029144,-3.6707306,0.024825851,0.024825851None,array(99.,95.,96.,dtype=float32),array(1.0,dtype=float32),array(0.09777574,-0.10116865,0.00395925,dtype=float32),80.029144,16.769524,1.
12、0,0.0None,array(63.,95.,85.,dtype=float32),array(0.0,dtype=float32),array(0.29416347,-0.25911677,-0.06548338,dtype=float32),80.070908,-0.085487366,0.47864118,0.47864118误差开始正常调整,表明训练过程已经进入正规进阶:批量产生随机训练数据import numpy as np random.seed()rowCount=5 xData=np.full(shape=(rowCount,3),fill_value=0,dtype=np.
13、float32)yTrainData=np.full(shape=rowCount,fill_value=0,dtype=np.float32)for i in range(rowCount):xDatai0=int(random.random()*11+90)xDatai1=int(random.random()*11+90)xDatai2=int(random.random()*11+90)xAll=xDatai0*0.6+xDatai1*0.3+xDatai2*0.1 numpy是常用于数学计算的类库np.full函数用于向数组中填充初始数值使用循环来生成批量的数据练习p生成生成5 5个
14、个-20,20)-20,20)范围内的随机数,并用范围内的随机数,并用TensorFlowTensorFlow设法求出这些数字设法求出这些数字sigmoidsigmoid操作后操作后的结果。的结果。p编程解决下述非线性问题:编程解决下述非线性问题:输入数据:输入数据:1,1,1 1,1,1,输出目标值:,输出目标值:2 2输入数据:输入数据:1,0,1 1,0,1,输出目标值:,输出目标值:1 1输入数据:输入数据:1,2,3 1,2,3,输出目标值:,输出目标值:3 3互助互利 共同进步深度学习 基于Python语言和Tensorflow平台更多样书申请和资源下载需求,请登录人邮教育社区()海量图书方便查询免费申请样书下载配套资源优惠购书成为作者囊括各大品类,您想要的应有尽有教师免费申请样书,我们将安排快递迅速送达教学视频、PPT课件、教学案例、习题答案、模拟试卷等丰富资源免费下载教师可以申请最低折扣学生直接优惠购买图书欢迎写文章投稿,我们强大的编辑团队将为您提供专业和高效的编辑出版服务