1. 程式人生 > >深度學習框架tensorflow學習與應用2(fetch and feed和訓練一元一次方程擬合示例 )

深度學習框架tensorflow學習與應用2(fetch and feed和訓練一元一次方程擬合示例 )

  • 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變小