1. 程式人生 > >Tensorflow 框架搭建神經網路(四)

Tensorflow 框架搭建神經網路(四)


# 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 表示先空著, 第二維位置寫有幾個輸入特徵。