神经网络-前向传播
前向傳播神經網絡搭建
1.tensorflow庫搭建神經網絡
- 參數:線上的權重W,用變量表示,隨機給初值。
? ? ? ? ?
- 相關介紹
- tf.truncated_normal():去掉過大偏離點的正太分布
- tf.random_normal()正太分布
- tf.random_uniform():平均分布
- tf.zeros:全零數組,tf.zeros([3,2],int32)
- tf.ones:全一數組,tf.ones([3,2],int32)
- tf.fill:全定值數組,tf.ones([3,2],6)
- tf.constant:直接給值,tf.constant([3,2,1])
- ? ?Variable(tf.random_normal([2,3],stddev=2,mean=0,seed=1)),參數介紹:?random_normal:生成正態分布隨機數,2*3矩陣,標準差為2,均值為0,隨機種子1;隨機種子如果去掉,每次生成的隨機數將不一致
- 變量初始化,計算圖結點運算需要用會話(with結構)實現;
2.神經網絡的實現過程:
?
- 準備數據集,提取特征,最為輸入喂給神經網絡(Neural Network,NN)
- 搭建NN結構,從輸入到輸出(先搭建計算圖,在用會話執行),NN 前向傳播算法----->計算輸出。
- 大量特征數據喂給NN,迭代優化NN參數,NN反向傳播算法----->優化參數訓練模型
- 使用訓練好的模型預測和分類。
3.前向傳播----->搭建模型,實現推理(以全連接網絡為例)
- eg.生產一批零件將體積x1,重量x2為特征輸入NN,通過NN后輸出一個值.
- 運算結果:
- 中間結點值a:XW1
- 第二層權重W2:
- 第一層權重W1:
- 輸入體積X:
- 實現 #實例:兩層簡單全連接神經網絡
import tensorflow as tf#定義輸入和參數:
x=tf.constant([[0.7,0.8]])#一行兩列的張量存儲體積和重量
w1=tf.Variable(tf.random.normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random.normal([3,1],stddev=1,seed=1))
print(w1)
print(w2)
#定義前向傳播
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)#用會話計算結果
with tf.compat.v1.Session() as sess:#tf.Session()#因版本不同,tf.Session使用tf.compat.v1.Session()代替init_op=tf.compat.v1.global_variables_initializer()#tf.global_variables_initializer()用tf.compat.v1.global_variables_initializer()sess.run(init_op)print("result is \n",sess.run(y))#實例:兩層簡單全連接神經網絡
import tensorflow as tf#定義輸入和參數:
#x=tf.placeholder(tf.float32,shape=(1,2))
x=tf.compat.v1.placeholder(tf.float32,shape=(1,2))#通過placeholder實行定義輸入(sess.run喂入一組數據)
w1=tf.Variable(tf.random.normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random.normal([3,1],stddev=1,seed=1))
print(w1)
print(w2)
#定義前向傳播
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)#用會話計算結果
with tf.compat.v1.Session() as sess:#tf.Session()#init_op=tf.global_variables_initializer()init_op=tf.compat.v1.global_variables_initializer()#tf.global_Variables_initializer()sess.run(init_op)print("result is \n",sess.run(y,feed_dict={x:[[0.7,0.5]]}))#x的一組特征喂入神經網絡。#實例:兩層簡單全連接神經網絡
import tensorflow as tf#定義輸入和參數:
#x=tf.placeholder(tf.float32,shape=(1,2))
x=tf.compat.v1.placeholder(tf.float32,shape=(None,2))#通過placeholder實行定義輸入(sess.run喂入多組數據),不知道維度可以None
w1=tf.Variable(tf.random.normal([2,3],stddev=1,seed=1))
w2=tf.Variable(tf.random.normal([3,1],stddev=1,seed=1))
print(w1)
print(w2)
#定義前向傳播
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)#用會話計算結果
with tf.compat.v1.Session() as sess:#tf.Session()#init_op=tf.global_variables_initializer()init_op=tf.compat.v1.global_variables_initializer()#tf.global_Variables_initializer()sess.run(init_op)print("result is \n",sess.run(y,feed_dict={x:[[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]}))#x的一組特征喂入神經網絡。print("w1\n",sess.run(w1))print("w2\n",sess.run(w2))
?運算結果:
-
?
總結
- 上一篇: 定长掩码地址划分与VLSM子网划分
- 下一篇: 线程同步-事件内核对象