美文网首页
机器学习入门——前向传播

机器学习入门——前向传播

作者: space0o0 | 来源:发表于2017-11-08 23:40 被阅读410次

    机器学习的基础整理——前向传播

    IMG_0119.JPG

    先祭出我在书本上拍照的前向传播结构图

    一个最简单的前向传播过程有:
    输入层(是实体提取的特征向量)
    隐藏层(是输入输出之间的连接关系,也是比较抽象模糊的一层)
    输出层(给出改传播的结果)

    图中a11的值由输入层的值和权重决定
    a11=x1W(1,1)+x2W(2,1)

    哎哟,看起来我要写好多加法,还有好多变量
    试想如果有多个输入层节点,那么隐藏层的节点也会成倍增加
    所以我们用矩阵的方法来记录隐藏层的值

    我们把输入层的特征写成一个矩阵,

    矩阵输入层:matrix_input
    [x1,x2]

    那么输入层的权重:matrix_weight(w1)
    [[W(1,1),W(1,2),W(1,3)],
    [W(2,1),W(2,2),W(2,3)]]

    所以隐藏层的矩阵就变成了
    matrix_input*matrix_weight

    a=[x1W(1,1)+x2W(2,1),x1W(1,2)+x2W(2,2),x1W(1,3)+x2W(2,3)]
    即a=tf.matmul(x,w1)
    这里需要矩阵的知识

    所以输出层就是 隐藏层的矩阵(a)*隐藏层的权重(w2)
    y=tf.matmul(a,w2)

    到此,就完成了一个前向传播的计算过程

    代码:

    # 模拟单个神经网络的计算
    # create weight
    # w1是输入层的权重矩阵,他的shape是[2,3],即2维数组,长度为3,
    w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
    # w2是隐藏层的权重矩阵,shape是[3,1],即3维数组,长度为1
    w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1))
    
    # create input x shape(1,2)
    x = tf.constant([[0.7, 0.9]])
    
    # 先计算隐藏层的数据,x的输出,y的输入
    a = tf.matmul(x, w1)
    # 计算y
    y = tf.matmul(a, w2)
    with tf.Session() as sess:
        tf.global_variables_initializer().run()
        print(y.eval())
    

    相关文章

      网友评论

          本文标题:机器学习入门——前向传播

          本文链接:https://www.haomeiwen.com/subject/ooeumxtx.html