1. 程式人生 > >tensorflow學習筆記(1)-基本語法和前向傳播

tensorflow學習筆記(1)-基本語法和前向傳播

pla oba -a 訓練 style lac 好的 ini 神經元

                 tensorflow學習筆記(1)

  (1)tf中的圖

  技術分享圖片

  圖中就是一個計算圖,一個計算過程。 圖中的constant是個常量

  計算圖只描述過程,不執行。

  (2)tf中的會話

  那麽怎麽計算呢?

  tensorflow有個會話是專門用來計算的

import tensorflow as tf
x=tf.constant([[1.0,2.0]])
w=tf.constant([[3.0],[4.0]])

y=tf.matmul(x,w)

print(y)

with tf.Session() as sess:
    
print(sess.run(y))

  這裏定義了個矩陣相乘的運算,並用會話結構 with tf.session() as sess:計算

  打印結果為技術分享圖片 1*3+2*4=11沒毛病

   (3)tf中的變量

  tf中遍歷就是神經元上的參數或者說是權重w,我們要改變的就是這個參數。

  技術分享圖片

  seed是隨機數種子,不加的話每次生成的都不一樣

  除了正太分布tf還提供均勻分布,還有零矩陣和1矩陣的初始化,還有填充矩陣和constant矩陣的初始化方法

  技術分享圖片

  技術分享圖片

  變量的初始化:在sess.run()中使用tf.global_variablies_initializer()

  如

init_op=tf.global_varibles_initializer()
sess.run(init_op)

   

  (4)tf.placeholder

  這是個占位的作用,可以理解為申明定義變量

  如x=tf.placeholder(tf.float32,shape=(1,2))這是聲明

  然後餵入一組數據

  sess.run(y,feed_dict={x:[[0.5,0.6]]})

  餵入多組數據

  x=tf.placeholder(tf.float32,shape=(None,2))#none表示不限樣本數

  sess.run(y,feed_dict={x:[[0.1,0.2],[0.2,0.3],[0.4,0.5]]})

  (5)神經網絡四部曲

  1.準備數據和提取特征值輸入神經網絡

  2.搭建NN結構,先搭建圖然後運算(前向傳播)(計算輸出)

  3.大量數據餵入NN,叠代優化參數(權重和偏置)(NN反向傳播算法)

  4.用訓練好的模型分類預測

  (5)這裏實現一個簡單2層網絡模型

  

# -*- coding: utf-8 -*-
import
tensorflow as tf #兩層神經網絡(全連接過程) #初始化特征值和參數 x=tf.constant([[0.7,0.5]]) w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1)) w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1)) #定義前向傳播過程 a=tf.matmul(x,w1) y=tf.matmul(a,w2) #用會話計算結果 with tf.Session() as sess: init_op=tf.global_variables_initializer() sess.run(init_op) print(sess.run(y))

  運行結果如下

  技術分享圖片

  這是餵入多組數據的方法

  這裏的特征值我們已經固定,我們也可以先用placeholdr占位,然後再sess.run()裏面餵入feed_dict={xxx}

  

  

  

tensorflow學習筆記(1)-基本語法和前向傳播