机器学习 day16(前向传播算法,Tensorflow的实现代码)

1. 手写数字识别的神经网络模型
在这里插入图片描述

  • 为简单起见,仅区分手写0和1,并用8*8的像素矩阵,共有64个像素(特征),展开写成向量x,即该神经网络模型的输入特征向量x的维数为64,设该模型有两层隐藏层,第一个隐藏层有25个神经元,第二个隐藏层有15个神经元,则第一个隐藏层的输出,激活值向量a上标1的结果如图所示
  • 输入特征向量X也可写作向量a上标0,因为输入层为layer 0
    在这里插入图片描述
  • 向量a上标2的结果与向量a上标1类似,把向量X改成向量a上标1,且注意神经元的个数为15个即可
    在这里插入图片描述
  • 因为输出层只有一个神经元,所以输出层的结果是标量激活值a而不是向量激活值a
  • 可以设阈值为0.5,从而区分出预测y的值为0或1
  • 激活值a上标3也可写作f(x),因为当我们写线性回归和逻辑回归时,f(x)函数的值表示线性回归或逻辑回归的输出,所以我们也可以用f(x)来表示神经网络模型计算的函数为关于x的函数,且函数的值为神经网络模型输出的值
  • 因为整个神经网络模型的计算是从左到右进行的,即传播神经元的激活,所以我们称这种算法叫前向传播
  • 在选择神经网络架构时,可以选择如下的典型模型,即如果神经网络模型有多层隐藏层,且每层隐藏里都有多个神经元,那么越靠近输出层的隐藏层,它所包含的神经元(隐藏单元)就会越少

2. Tensorflow的实现代码
在这里插入图片描述

  • 该模型为炒咖啡豆,输入特征为温度和时间
  • 设向量x为一个二维数组,第一个元素为200摄氏度,17分钟的一维数组(样本可能有很多,一个样本为一个一维数组)
  • 创建第一层隐藏层 layer 1 ,它具有3个隐藏单元,且该层的激活函数为sigmoid函数,dense表示全连接层,以后再说。 layer 2类似,仅改变隐藏单元的个数为1
  • 将输入特征向量X带入layer_1()函数中,得出激活向量a1的值,维数为3,因为有三个隐藏单元。a2类似,但带入的是向量a1的值,且因为只有一个隐藏单元,所以a2是标量
  • 最后,设阈值为0.5,并判断a2与阈值的关系,若大于等于则预测y为1,若小于则预测y为0
    在这里插入图片描述
  • 该模型为识别手写数字,输入特征为图片的像素矩阵展开后的向量
  • 设x为一个二维数组,第一个元素为第一张图片的像素向量值
  • layer 1有25个隐藏单元,且它的激活函数为sigmoid函数,将向量x带入layer_1()函数中,得出向量a1的值。layer 2,layer 3类似
  • 最后,设阈值为0.5,判断a3与阈值的关系,若大于等于则预测y为1,若小于则预测y为0

猜你喜欢

转载自blog.csdn.net/u011453680/article/details/131130488
今日推荐