瞭解Tensorflow的開發基本步驟

瞭解Tensorflow的開發基本步驟

1. 定義Tensorflow輸入節點

定義輸入節點的方法

  1. 通過佔位符定義(一般情況)
  2. 通過字典類型定義(用於輸入比較多的情況)
  3. 直接定義(很少使用)

1. 通過佔位符定義(一般情況)

如 y = 2x 的大致擬閤中就是使用佔位符定義輸入節點的

X = tf.placeholder("float")
Y = tf.placeholder("float")

2. 通過字典類型定義(用於輸入比較多的情況)

和第一種比較類似

# 佔位符
inputdict = {
    'x': tf.placeholder("float"),
    'y': tf.placeholder("float")
}

3. 直接定義(很少使用)

將定義好的 Python 變量直接放到 OP 節點中參與輸入的運算,將模擬數據變量直接放到模型中進行訓練。

#生成模擬數據
train_X =np.float32( np.linspace(-1, 1, 100))
train_Y = 2 * train_X + np.random.randn(*train_X.shape) * 0.3 # y=2x,但是加入了噪聲
#圖形顯示
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.legend()
plt.show()

# 模型參數
W = tf.Variable(tf.random_normal([1]), name="weight")
b = tf.Variable(tf.zeros([1]), name="bias")
# 前向結構
z = tf.multiply(W, train_X)+ b

2. 定義“學習參數”變量

直接定義

W = tf.Variable(tf.random_normal([1]), name = "weigth")
b = tf.Variable(tf.zeros([1]), name = "bias")

字典定義

# 模型參數
paradict = {
    'w' = tf.Variable(tf.random_normal([1]), name = "weigth"),
    'b' = tf.Variable(tf.zeros([1]), name = "bias")
}
# 向前結構
z = tf.multipply(X, paradict['w']) + paradict['b']

3. 定義“運算”

正向傳播模型

  • 單層神經網絡
  • 多層神經網絡
  • 卷積神經網絡
  • 循環神經網絡
  • GoogLeNet
  • Resnet

定義損失函數

主要用於計算“輸出值”與“目標值”之間的誤差,是配合反向傳播使用的
(必須可導)

Tensorflow框架已經爲我們準備好了

4. 優化函數,優化目標

5. 初始化所有變量

# 初始化變量
init = tf.global_variables_initializer()
# 這步必須在所有變量和OP定義完成之後,這樣才能保證定義內容的有效性,否則無法使用session中的run來進行算值

# 啓動session
with tf.Session() as sess:
    sess.run(init)

6. 迭代更新參數到最優解

在迭代訓練環節,都是需要通過建立一個session來完成的,常用的是使用with 語法,可以在session結束後自行關閉

with tf Session() as sess:
     sess.run(init)
     
     for epoch in range(training_epochs):
        for (x, y) in zip(train_X, train_Y):
            sess.run(optimizer, feed_dict={X: x, Y: y})

使用MINIBATCH的概念進行迭代訓練(每次取一定量的數據同時放到網絡裏進行訓練)

7. 測試模型

print ("cost=", sess.run(cost, feed_dict={X: train_X, Y: train_Y}), "W=", sess.run(W), "b=", sess.run(b))

# print ("cost:",cost.eval({X: train_X, Y: train_Y}))

8. 使用模型

print ("x=0.2,z=", sess.run(z, feed_dict={X: 0.2}))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章