深度學習框架tensorflow學習與應用2(fetch and feed和訓練一元一次方程擬合示例 )
阿新 • • 發佈:2018-12-29
-
Fetch
Fetch操作是指TensorFlow的session可以一次run多個op
語法: 將多個op放入陣列中然後傳給run方法
-
Feed
Feed操作是指首先建立佔位符, 然後把佔位符放入op中.
在run op的時候, 再把要op的值傳進去, 以達到使用時再傳引數的目的
語法: 首先建立placeholder 然後再在run的時候把值以字典的方式傳入run
-
訓練一元一次方程擬合示例
首先我們會給出一個一元一次方程: y = 0.1x + 0.2
我們會給x賦值100次, 得到100個y值, 來作為我們這次的資料來源
然後通過TensorFlow, 使用這100個數據, 通過200次梯度下降演算法迭代, 來計算y = kx + b 的k和b, 進而還原出方程
語法補充
1. tf.reduce_mean
tensorflow中有一類在tensor的某一維度上求值的函式。如:
求最大值tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None)
求平均值tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)
引數1--input_tensor:待求值的tensor。
引數2--reduction_indices:在哪一維上求解。
引數(3)(4)可忽略
舉例說明:
import tensorflow as tf import numpy as np x = [[1.0,2.0],[3.0,4.0]] op1 = tf.reduce_mean(x) op2 = tf.reduce_mean(x, 0) op3 = tf.reduce_mean(x, 1) with tf.Session() as sess: #2.5 #如果不指定第二個引數,那麼就在所有的元素中取平均值 print(sess.run(op1)) # [2., 3.] #指定第二個引數為0,則第一維的元素取平均值,即每一列求平均值 print(sess.run(op2)) # [1.5, 3.5] #指定第二個引數為1,則第二維的元素取平均值,即每一行求平均值 print(sess.run(op3))
同理,還可用tf.reduce_max()求最大值等。
2. optimizer.minimize(loss)
計算模型相關引數的損失梯度, 然後根據計算所得的梯度更新變數, 使loss變小