Tensorflow 框架搭建神經網路(四)
阿新 • • 發佈:2019-02-10
# Copyright (c)2018, 東北大學軟體學院學生 # All rightsreserved # 檔名稱:test.py # 作 者:孔雲 #問題描述:利用placeholder實現輸入定義 #coding:utf-8 #兩層簡單神經網路(全連線) import tensorflow as tf #定義輸入和引數 #用placeholder實現輸入定義 (sess.run中喂一組資料) x = tf.placeholder(tf.float32, shape=(1, 2)) 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("the result of y is:\n",sess.run(y, feed_dict={x: [[0.7,0.5]]}))
執行結果如下:
上述程式碼利用placeholder實現輸入定義,在sess.run中喂一組資料。下面實現在sess.run中喂多組資料,程式碼如下:
#coding:utf-8 #兩層簡單神經網路(全連線) import tensorflow as tf #定義輸入和引數 #用placeholder定義輸入(sess.run喂多組資料) x = tf.placeholder(tf.float32, shape=(None, 2)) 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 ("the result of y is:\n",sess.run(y, feed_dict={x: [[0.7,0.5],[0.2,0.3],[0.3,0.4],[0.4,0.5]]})) print ("w1:\n", sess.run(w1)) print("w2:\n", sess.run(w2))
執行結果如下:
注:由上述兩段程式碼知,我們可以一次喂入一組或多組輸入, 讓神經網路計算輸出 y, 可以先用 tf.placeholder 給輸入佔位。 如果一次喂一組資料 shape 的第一維位置寫 1, 第二維位置看有幾個輸入特徵,就寫幾個; 如果一次想喂多組資料, shape 的第一維位置可以寫 None 表示先空著, 第二維位置寫有幾個輸入特徵。