深度学习-基于Python语言和Tensorflow平台第7章_多层全连接神经网络课件_第1页
深度学习-基于Python语言和Tensorflow平台第7章_多层全连接神经网络课件_第2页
深度学习-基于Python语言和Tensorflow平台第7章_多层全连接神经网络课件_第3页
深度学习-基于Python语言和Tensorflow平台第7章_多层全连接神经网络课件_第4页
深度学习-基于Python语言和Tensorflow平台第7章_多层全连接神经网络课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Email: topget谢琼多层全连接神经网络第7章深度学习基于Python语言和Tensorflow平台了解复杂的非线性问题学习训练及优化多层全连接神经网络的方法010203target目标学习多层全连接网络目录导航1234身份证问题的引入及分析单层模型多层全连接神经网络进一步优化Contents身份证问题的引入倒数第二位代表了持有者的性别,奇数代表男性,偶数代表女性但计算机不知道这个规则,设法用神经网络来求解xxxxxxxxxxxxxx1234身份证问题分析 输入和输出身份证号的每一位可以拆开作为神经网络的输入,而持有者性别则是神经网络计算结果的目标值我们可以通过收集一批身份证来获取训练

2、数据性别分为男、女两类,本问题显然是一个二分类问题本问题显然不是一个线性问题(思考为什么?)与三好学生评选问题是一个一次跳变的非线性问题不同,本问题是一个不停“上下跳变”的非线性问题目录导航1234身份证问题的引入及分析单层模型多层全连接神经网络进一步优化Contents设计单层的神经网络为演示简单起见,我们仅取身份证后4位数字作为输入该单层神经网络的主要代码x = tf.placeholder(tf.float32)yTrain = tf.placeholder(tf.float32)w = tf.Variable(tf.random_normal(4, mean=0.5, stddev=0

3、.1), dtype=tf.float32)b = tf.Variable(0, dtype=tf.float32)n1 = w * x + by = tf.nn.sigmoid(tf.reduce_sum(n1)loss = tf.abs(y - yTrain)tf.random_normal函数用于生成符合正态分布的随机数填充的矩阵注意简化的写法单层神经网络的训练结果i: 4991, loss: 0.0890504271, avgLoss: 0.4530942420i: 4992, loss: 0.9520061612, avgLoss: 0.4531941643i: 4993, loss

4、: 0.0028267603, avgLoss: 0.4531039826i: 4994, loss: 0.9777230024, avgLoss: 0.4532090114i: 4995, loss: 0.8794452548, avgLoss: 0.4532943269i: 4996, loss: 0.9999799728, avgLoss: 0.4534037297i: 4997, loss: 0.9999708533, avgLoss: 0.4535130868i: 4998, loss: 0.8330855966, avgLoss: 0.4535890165i: 4999, loss

5、: 0.9241330028, avgLoss: 0.4536831253训练5000次后,发现平均误差无法被明显缩小,说明这种单层网络结构对本问题效果不好目录导航1234身份证问题的引入及分析单层模型多层全连接神经网络进一步优化Contents概念补充 矩阵乘法:叉乘1*1 + 2 * 3 + 3 * 5 = 22第一步:概念补充 矩阵乘法:叉乘1*2 + 2 * 4 + 3 * 6 = 28第二步:依此类推用代码验证矩阵乘法 import numpy as np a = 1, 2, 3, 4, 5, 6 b = 1, 2, 3, 4, 5, 6 c = np.matmul(a, b) pr

6、int(c)22 28 49 64矩阵乘法的规律两个矩阵如果形态分别为n1, m1和n2, m2,那么只有m1与n2相等(也就是说前面的矩阵的列数等于后面矩阵的行数)的时候,两者才能进行矩阵乘法(叉乘)的运算;本例中第一个矩阵形态是2, 3,第二个矩阵形态是3, 2,所以是可以进行矩阵乘法计算的;两者相乘的结果是一个形态为n1, m2的新矩阵,即新矩阵的行数等于乘号左边矩阵的行数,列数等于乘号右边矩阵的列数。因此,本例中的结果矩阵形态为2, 2;全连接层此处应为叉乘()注意连接关系与点乘的区别使用均方误差作为误差函数loss = tf.reduce_mean(tf.square(y - yTr

7、ain)对误差做先求平方再做求平均值的运算,对向量或矩阵尤其有效激活函数tanh明显地,tanh函数与sigmoid函数的不同之处在于:其结果的范围在-1, 1之间而不是0, 1之间新设计的多层全连接神经网络两个隐藏层全连接(叉乘)新网络模型的主要代码x = tf.placeholder(tf.float32)yTrain = tf.placeholder(tf.float32)w1 = tf.Variable(tf.random_normal(4, 8, mean=0.5, stddev=0.1), dtype=tf.float32)b1 = tf.Variable(0, dtype=tf.

8、float32)xr = tf.reshape(x, 1, 4)n1 = tf.nn.tanh(tf.matmul(xr, w1) + b1)w2 = tf.Variable(tf.random_normal(8, 2, mean=0.5, stddev=0.1), dtype=tf.float32)b2 = tf.Variable(0, dtype=tf.float32)n2 = tf.matmul(n1, w2) + b2y = tf.nn.softmax(tf.reshape(n2, 2)loss = tf.reduce_mean(tf.square(y - yTrain)矩阵乘法两端必

9、须都是矩阵,至少二维,不能是向量,所以要转换为二维数组tf.matmul函数即为做矩阵乘法观察训练结果i: 499991, loss: 0.1160595417, avgLoss: 0.1832548474i: 499992, loss: 0.1094995886, avgLoss: 0.1832546999i: 499993, loss: 0.0000425474, avgLoss: 0.1832543334i: 499994, loss: 0.4979282022, avgLoss: 0.1832549628i: 499995, loss: 0.1283140332, avgLoss: 0

10、.1832548529i: 499996, loss: 0.1064243242, avgLoss: 0.1832546993i: 499997, loss: 0.0000355149, avgLoss: 0.1832543328i: 499998, loss: 0.1020298377, avgLoss: 0.1832541704i: 499999, loss: 0.0804424137, avgLoss: 0.1832539647训练50万次之后,误差已经被缩小到了0.18左右,这说明整个模型设计是有效的的,使得神经网络慢慢趋向越来越正确的计算结果。另一方面,这么多次训练仍然未能达到一个非常小的平均误差,也说明这一类非线性跳动的问题解决起来是比较复杂的,还有改进的余地。目录导航1234身份证问题的引入及分析单层模型多层全连接神经网络进一步优化Contents如何进一步优化 增加层数:增加隐藏层的数量并使用不同的激活函数。 增加神经元数量:增加隐藏层节点的数量。 调节学习率:减小或加大学习率。这个问题将留给大家作为练习,可用的手段包括:练习互助互利 共同进步深度学习 基于Python语言和Tensorflow平台更多样书申请和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论