1. 程式人生 > >Tensorflow學習筆記三---前向傳播

Tensorflow學習筆記三---前向傳播

前向傳播

  • 目的:搭建模型,實現推理

一些重要的概念

  • 引數
    一個神經元
    上圖中的w(權重)即為引數,一般隨機賦給初值
  • 計算
    對於這麼一個神經元,y的值為
    y = x 1
    w 1 + x 2 w 2

    事實上用矩陣表達更方便也跟通常一點
y=[x1x2]×[w1w2]" role="presentation"> y = [ x 1
x 2 ] × [ w 1 w 2 ]

tensorflow中提供的一些重要函式

  • 生成變數
w = tf.Varable(tf.random_normal([2,3],stddev = 2,mean=0,seed=1))
#              生成正態分佈       2x3的矩陣 標準差等於2 均值為0  種子為1
# 與之類似的還有
tf.zeros([2,3],int32) #生成全為0的矩陣
tf.ones([2,3],int32)  #生成全為1的矩陣
tf.fill([2,3],6)      #生成為定值的矩陣
tf.constant([3,2])    #生成給定的常數矩陣

例子

生產一批零件以體積和重量為特徵輸入NN,通過NN後輸出一個值
這裡寫圖片描述

(1) a 11 = [ x 1 x 2 ] × [ w 1 , 1 ( 1 ) w 2 , 1 ( 1 ) ]
(2) a 12 = [ x 1 x 2 ] × [ w 1 , 2 ( 1 ) w 2 , 2 ( 1 ) ]
(3) a 13 = [ x 1 x 2 ] × [ w 1 , 3 ( 1 ) w 2 , 3 ( 1 ) ]
所以y為
(4) y = [ a 11 a 12 a 13 ] × [ w 11 ( 2 ) w 21 ( 2 ) w 31 ( 2 ) ]
用tensorflow表達

  1 #coding:utf-8
  2 import tensorflow as tf
  3
  4 #定義輸入和引數
  5 #一行兩列的輸入代表重量和體積
  6 x = tf.constant([[0.7,0.5]])
  7 w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
  8 w2 = tf.Variable(tf.random_normal([3,1],stddev=1,seed=1))
  9
 10 #定義向前傳播過程
 11 a = tf.matmul(x,w1)
 12 y = tf.matmul(a,w2)
 13
 14 #用會話計算結果
 15
 16 with tf.Session() as sess:
 17     init_op = tf.global_variables_initializer()
 18     sess.run(init_op)
 19     print('y in tensorflow2.py is:\n',sess.run(y))