tensorflow入门(二)基于tensorflow的前向传播算法

一个神经元有多个输入和输出。每个神经元的输入既可以是其他神经元的输出,也可以是整个神经网络的输入,所谓神经网络的结构指的就是不同神经元之间的连接结构。如下图所示,一个最简单的神经元结构的输出就是所有输入的加权和,而不同权重就是神经元的参数,神经网络的优化过程就是优化神经元中参数取值的过程。

                                              

计算神经网络的前向传播结果需要三部分信息,如下图所示:

  • 第一部分是神经网络的输入,这个输入就是从实体中提取的特征向量
  • 第二部分是神经网络的连接结构。神经网络是是由神经元构成的,神经网络的结构给出不同神经元之间输入和输出的连接关系,神经元也可以称为节点
  • 最后一部分给出了神经元的参数

                    

上图中a_{11}节点有两个输入,它们分别是x_1x_2的输出,而a_{11}的输出则是节点y的输入。上图用W来表示神经网络中的神经元。W的上标表明了神经网络的层数,比如W^{(1)}表示第一层节点的参数,而W^{(2)}表示第二层节点的参数。W的下标表明了连接节点的编号,比如W^{(1)}_{1,2}表示连接x_1a_{12}节点的边上的权重。给定神经网络的输入、神经网络的结构以及边上的权重,就可以通过前向传播算法来计算出神经网络的输出。下图给出神经元前向传播算法的示意图:

           

输入层的取值x1 = 0.7 和 x2 = 0.9。从输入层开始一层一层地使用前向传播算法。首先隐藏层中有三个节点,每一个节点的取值都是输入层取值的加权和。下面给出a11取值的详细计算过程:

                                                  a_{11}=W^{(1)}_{1,1}x_1+W^{(1)}_{2,1}x_2 = 0.7\times 0.2 + 0.9\times 0.3=0.14 +0.27

a12和a13也可以通过类似的方法计算得到,上图给出了具体的计算公式。在得到第一层节点的取值之后,可以进一步推导得到输出层的取值。类似地,输出层中节点的取值就是第一层的加权和:

                                                 y= W^{(2)}_{1,1}a_{1,1}+W^{(2)}_{2,1}a_{1,2}+W^{(2)}_{3,1}a_{3,1} \\=0.41\times0.6+(-0.38)\times0.1+0.46\times(-0.2)=0.116 

将输入x1,x2组织成一个1*2的矩阵x=[x1,x2],而W^{(1)} 组织成一个2*3的矩阵:

                                                   W^{(1)}=\bigl(\begin{smallmatrix} W_{1,1}^{(1)} & W_{1,2}^{(1)} & W_{1,3}^{(1)}\\ W_{2,1}^{(1)} & W_{2,2}^{(1)} & W_{2,3}^{(1)} \end{smallmatrix}\bigr) \\ a^{(1)}=[a_{11},a_{12},a_{13}]\\ =xW^{(1)}\\ =[x_1,x_2] \bigl(\begin{smallmatrix} W_{1,1}^{(1)} & W_{1,2}^{(1)} & W_{1,3}^{(1)}\\ W_{2,1}^{(1)} & W_{2,2}^{(1)} & W_{2,3}^{(1)} \end{smallmatrix}\bigr)\\ =[W^{(1)}_{1,1}x_1+W^{(1)}_{2,1}x_2,W^{(1)}_{2,1}x_1+W^{(1)}_{2,2}x_2,W^{(1)}_{1,3}x_1+W^{(1)}_{2,3}x_2]

 类似的输出层可以表示为:

                                   [y]=a^{(1)}W^{(2)}=[a_{11},a_{12},a_{13}]\bigl(\begin{smallmatrix} W^{(2)}_{1,1}\\ W^{(2)}_{2,1}\\ W^{(2)}_{3,1} \end{smallmatrix}\bigr)= [W_{1,1}^{(1)}a_{11}+W_{2,1}^{(2)}a_{12}+W_{3,1}^{(2)}a_{13}]

在tensorflow中可以用矩阵乘法来实现神经网络的前向传播算法:

a = tf.matmul(x ,w1)
y = tf.matmul(a ,w2)

其中tf.matmul()实现了矩阵乘法的功能。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值