本站推荐

产品中心
首页  |  产品中心  |  2] TensorFlow 向前宣扬算法(forward-propagation)与反向宣

2] TensorFlow 向前宣扬算法(forward-propagation)与反向宣

2021-10-13 178 分享
返回首页

  with tf.Session() as sess 声明一个会话(session)通过会话计算结果,但在计算y之前,需要将所有用到的变量初始化,也就是说虽然在变量定义时给出的变量初始化的方法,但这个方法并没有被真正运行(所以在运行y之前需要通过运行tializer和w2.initializer来初始化权重进行赋值, 虽然直接指定每个变量的初始化是一个可行的方案,但是随着节点增多或节点之间的依赖关系增多,单个调用的方法会变得复杂,这里TensorFlow提供了一种便利的方式

  TensorFlow 的核心概念是张量(tensor)所有的数据都是通过张量的形式来组织的那么变量和张量是什么关系呢? 变量的声明函数 tf.Variable 是一个运算。这个运算的输出结果就是一个张量, 而这个张量即是variable,所以变量可以看作是一种特殊的张量

  那么tf.Variable底层是如何实现的呢, 下面是神经网络前向传播样例中变量 w1 相关部分的计算图可视化结果

  在这张图 的下方可以看到 w1 通过一个 read 操作将值提供给了一个乘法运算这个乘法操作就是 tf.matmul(x, w1), 初始化变量 w1 的操作是通过 Assign 操作 输入random_normal随机值完成的.整个过程就是变量初始化过程.

  维度shape和类型 (type)  也是变量最重要的两个属性。和大部分程序 语言类似变量的类型是不可改变的。一个变量在构建之后它的类型就不能再改变了 。比如在上面给出的前向传播样例中 w1的类型为 random_normal结果的默认类型 tf.float32, 那么它将不能被赋予其他类型的值

  只有经过有效训练的神经网络模型才可以真正地解决分类或者回归问题. 使用监督学习的方式设置神经网络参数需要有一个标注好的训练数据集,通过调整神经网络中的参数对训练数据进行拟合可以使得模型对未知的样本提供预测的能力.

  神经网络优化算法中,最常用的是反向传播算法(back-propagation)

  反向传播算法实现了一个法代的过程。在每次迭代的开始首先需要选取一小部分训练数据 这一小部分数据叫做一个 batch

  这个 batch 的样例会通过前向传播算法得到神经网络模型的预测结果。因为训练数据都是有正确答案标注的 所以可以计算出当前神经网络模型的预测答案与正确答案之间的差距。最后基于预测值 和真实值之间的差距反向传播算法会相应更新神经网络参数的取值使得在这个 batch 上神经网络模型的预测结果和真实答案更加接近

  但如果每轮迭代中选取的数据都要通过常量来表示那么TensorFlow 的计算图将会太大。因为每生成一个常量TensorFlow都会在计算图中增加一个节点。  一个神经网络的训练过程会需要经过几百万轮甚至几亿轮的迭代这样计算图就会非常大而且利用率很低. 为了避免这个问题, TensorFlow 提供了placeholder机制用于提供输入数据。placeholder 相当于定义了一个位置这个位置中的数据在程序运行时再指定.这样在程序 中就不需要生成大量常量来提供输入数据而只需要将数据通过 placeholder 传入 TensorFlow 计算图。在 placeholder 定义时这个位置上的数据类型是需要指定的。和其他张量一样placeholder 的类型也是不可以改变的。 placeholder 中数据的维度信息可以根据 提供的数据推导得出所以不一定要给出。下面给出了通过 placeholder 实现前向传播算法的代码。

  得到前向传播结果之后,需要定义一个损失函数来刻画当前的预测值与真实值(标记好的数据集)之间的差距, 然后通过反向传播算法(back-propagation)来调整神经网络参数的取值,使得差距可以被缩小.

  其中 cross_entropy定义了真实值和预测值之间的交叉熵 (cross entropy), 这是分类问题中一个常用的损失函数

  3. 设定会话(tf.Session)并且在训练数据上反复迭代运行反向传播优化算法

  的样例程序中,所有变量的取值都是随机的。在使用神经网络解决实际的分类或者回归问题时需要更好地设置参数取值。使用监督学习的方式设置神经网络参数需要有一个标注好的训练数据集。以判断零件是否合格为例,这个标注好的训练数据集就是收集的一批合格零件和一批不合格零件。监督学习最重要的思想就是,在已知答案的标注数据集上,模型给出的预测结果要尽量接近真实的答案。通过调整神经网络中的参数对训练数据进行拟合

  eholder作为存放输入数据的地方,这里的维度也不一定要定义 # 但是如果维度是确定,那么给出维度可以降低出错的概率 x = tf.pl

  g.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词。对于我们这些所谓的尝试应用机器学习技术解决某些问题的人,更是如此。曾记得,我们绞尽脑汁,搓手顿足,大喊“为什么我跑的模型不work?&

  ,stddev=1,seed=1)) #俩行三列随机数组成的矩阵(标准差是1,随机种子是1) w

   import os os.environ

  主要用于根据损失函数来对网络参数进行优化,下面主要根据李宏毅机器学习课程来整理

  ,原版视频在首先,我们来看一看优化方程: 上面的损失函数是普通的交叉熵损失函数,然后加上了正则化项,为了更新...

  进行参数更新,加入交叉熵和softmax又会如何变化? 其中的数学原理分析:请点击这里。 转载于:

  ficial Neural Network,ANN)的最常用且最有效的

  通过前面几篇建立的神经网络以上一层的输出作为下一层的输入。这种⽹络被称为前馈神经网络。这意味着网络中是没有回路的 信息总是

  回馈。如果确实有回路,我们最终会有这样的情况: 函数的输⼊依赖于输出。这将难于理解,所以我们不允许这样的环路。(前馈 指的是拓扑学上的

  :从输入和输出的表示开始,介绍感知机的模型,介绍多输入、多输出的全连接网络层,然后扩展至多层神经网络;介绍了针对不同的问题场景下输出层的设计,最后介绍常用的损失函数,及实现方法。 本章我...

  三层全连接网络 有两个输入,一个是零件的长度x1x_1x1​,一个是零件的质量x

  ReLU 函数导数1.3 LeakyReLU函数导数1.4 Tanh 函数梯度

  1.激活函数导数 1.1 Sigmoid函数导数 Sigmoid函数表达式:(x)=11+ex\sigma(x) = \fr

  x}}(x)=1+ex1​ Sigmoid函数的导数表达式:ddx(x)=(1)\fr

  的具体实现还是模糊不清,用了很久也不是很了解。因此特意先对深度学习中的相关基础概念做一下总结。先看看前向

  的思想比较简单。 举个例子,假设上一层结点i,j,k,等一些结点

  AlexNet主要使用到的技术点:一、使用ReLU作为CNN激活函数,成功解决了Sigmoid在网络较深时的梯度弥撒问题。 二、训练时使用D

  out随机忽略一部分神经元,以避免模型过拟合。(AlexNet中主要在最后几个全连接层使用D

  out) 三、AlexNet全部使用最大池化,避免平均池化的模糊化效果。并且AlexNet提出让步长比池化核的尺寸小,这样池化层的输出之间会有重叠和覆盖,

  VGGNet模型的准确率相比于AlexNet有了很大提升,VGGNet虽然模型参数比AlexNet多,但反而只需要较少的迭代次数就可以收敛,主要原因是更深的网络和更小的卷积核带来的隐式的正则化效果。VGGNet凭借其相对不算很高的复杂度和优秀的分类性能,成为了一代经典的卷积神经网络,直到现在依然被应用在很多地方。VGGNet论文作者给出的总结: LRN层作用不大。 越深的网络效果越好。 1*1的卷积

  (欢迎加群讨论学习) #如有错误还望留言指正,谢谢 #0导入模块 ,生成模拟数据集 import

  Cognos开发ContentManagerServiceStub不能转换为Stub

消息阅读

应用虚拟产物专割粉丝“韭菜” 一

应用虚拟产物专割粉丝“韭菜” 一

科德数控获92家机构调研:归纳来看

科德数控获92家机构调研:归纳来看

拼多多美团向主流支出东西绽放

拼多多美团向主流支出东西绽放

地址:山东省临沂市成都高新区环球中心E2-1205

手机:15925710757

邮箱:450399833@qq.com

热线:86-0760-82681960

传真:86-0760-82681960

友情链接:

TAG标签 网站地图 XML地图 txt地图

jnhfd.cn 日博app下载