google機器學習框架tensorflow學習筆記(四)
使用TensorFlow的基本步驟
- 圖協議緩沖區
- 執行(分布式)圖的運行時
tf.estimator API
Tensorflow編程概念
學習目標:
學習 TensorFlow 編程模型的基礎知識,重點了解以下概念:
- 張量
- 指令
- 圖
- 會話
- 構建一個簡單的 TensorFlow 程序,使用該程序繪制一個默認圖并創建一個運行該圖的會話
概念概覽
TensorFlow 的名稱源自張量,張量是任意維度的數組。借助 TensorFlow,您可以操控具有大量維度的張量。即便如此,在大多數情況下,您會使用以下一個或多個低維張量:
- 標量是零維數組(零階張量)。例如,
\'Howdy\'
或5
- 矢量是一維數組(一階張量)。例如,
[2, 3, 5, 7, 11]
或[5]
- 矩陣是二維數組(二階張量)。例如,
[[3.1, 8.2, 5.9][4.3, -2.7, 6.5]]
TensorFlow 指令會創建、銷毀和操控張量。典型 TensorFlow 程序中的大多數代碼行都是指令。
TensorFlow 圖(也稱為計算圖或數據流圖)是一種圖數據結構。很多 TensorFlow 程序由單個圖構成,但是 TensorFlow 程序可以選擇創建多個圖。圖的節點是指令;圖的邊是張量。張量流經圖,在每個節點由一個指令操控。一個指令的輸出張量通常會變成后續指令的輸入張量。TensorFlow 會實現延遲執行模型,意味著系統僅會根據相關節點的需求在需要時計算節點。
張量可以作為常量或變量存儲在圖中。您可能已經猜到,常量存儲的是值不會發生更改的張量,而變量存儲的是值會發生更改的張量。不過,您可能沒有猜到的是,常量和變量都只是圖中的一種指令。常量是始終會返回同一張量值的指令。變量是會返回分配給它的任何張量的指令。
要定義常量,請使用 tf.constant
指令,并傳入它的值。例如:
x = tf.constant([5.2])
同樣,您可以創建如下變量:
y = tf.Variable([5])
或者,您也可以先創建變量,然后再如下所示地分配一個值(注意:您始終需要指定一個默認值):
y = tf.Variable([0])
y = y.assign([5])
定義一些常量或變量后,您可以將它們與其他指令(如 tf.add
)結合使用。在評估 tf.add
指令時,它會調用您的 tf.constant
或 tf.Variable
指令,以獲取它們的值,然后返回一個包含這些值之和的新張量。
圖必須在 TensorFlow 會話中運行,會話存儲了它所運行的圖的狀態:
將 tf.Session() 作為會話:
initialization = tf.global_variables_initializer()
print y.eval()
在使用 tf.Variable
時,您必須在會話開始時調用 tf.global_variables_initializer
,以明確初始化這些變量,如上所示。
注意:會話可以將圖分發到多個機器上執行(假設程序在某個分布式計算框架上運行)。有關詳情,請參閱分布式 TensorFlow。
總結
TensorFlow 編程本質上是一個兩步流程:
- 將常量、變量和指令整合到一個圖中。
- 在一個會話中評估這些常量、變量和指令。
創建一個簡單的Tensorflow程序
import
語句。 當然,運行 TensorFlow 程序所需的 import
語句組合取決于您的程序將要訪問的功能。至少,您必須在所有 TensorFlow 程序中添加 import tensorflow
語句:import tensorflow as tf
Graph
,以便跟蹤狀態(例如,您可能希望在每個單元格中使用一個不同的 Graph
)。import tensorflow as tf
# Create a graph.
g = tf.Graph()
# Establish the graph as the "default" graph.
with g.as_default():
# Assemble a graph consisting of the following three operations:
# * Two tf.constant operations to create the operands.
# * One tf.add operation to add the two operands.
x = tf.constant(8, name="x_const")
y = tf.constant(5, name="y_const")
sum = tf.add(x, y, name="x_y_sum")
# Now create a session.
# The session will run the default graph.
with tf.Session() as sess:
print sum.eval()
更多關于張量編程的內容請參考tensorflow張量編程補充點擊打開鏈接智能推薦
谷歌機器學習框架 ---- TensorFlow
有關TensorFlow與其他框架的詳細對比可以閱讀: https://zhuanlan.zhihu.com/p/25547838 01 TensorFlow的編程模式 編程模式分為兩種:命令式編程與符號式編程 前者是我們常用的C++,java等語言的編程風格如下 命令式編程看起來邏輯非常清晰,易于理解。而符號式編程涉及較多的嵌入和優化,如下 執行相同的計算時c,d可以共用...
TensorFlow:實戰Google深度學習框架(四)MNIST數據集識別問題
第5章 MNIST數字識別問題 5.1 MNIST數據處理 5.2 神經網絡的訓練以及不同模型結果的對比 5.2.1 TensorFlow訓練神經網絡 5.2.2 使用驗證數據集判斷模型的效果 5.2.3 不同模型效果比較 5.3 變量管理 5.4 TensorFlow模型持久化 5.4.1 持久化代碼實現 1. ckpt文件的保存 2. 加載已經保存的TensorFlow模型 5.4.2 持久化...
《TensorFlow-實戰Google深度學習框架》學習筆記 計算圖、張量、會話
3.1 TensorFlow計算模型——計算圖 Tensor:是張量,可以簡單理解為多維數組,相當于表明了數據結構 Flow:是流,表達張量之間通過計算相互轉化的過程...
【TensorFlow實戰Google深度學習框架】學習筆記(圖像識別與卷積神經網絡)
1、圖像識別經典數據集Cifar cifar是32x32x3的彩色圖片集 2、卷積神經網絡簡介 3、卷積神經網絡常用的結構 3.1卷積層 Filter的深度就是Filter的個數 3.2池化層 4、經典卷積神經網絡模型 卷積神經網絡結構的問題 卷積層和池化層的參數配置問題 5、卷積網絡的遷移學習 遷移學習可以總結為在別人成功的模型(網絡結構和訓練好的參數)的基礎上修改、增減自己的網絡結構。這樣做的...
【Google 機器學習筆記】十、TensorFlow 2.1 實戰(二)基本圖像分類(MNIST)
【Google 機器學習筆記】 十、TensorFlow 2.1 實戰(二)基本圖像分類 為節省時間,降低學習成本,本節實戰的圖片分類對象 tf.keras 中內置的 MNIST 數據集。 首先回顧機器學習編程的幾個基本步驟 1. 數據 &em...
猜你喜歡
Tensorflow【實戰Google深度學習框架】—使用 TensorFlow 實現模型
文章目錄 1.建立模型(Model) 2.使用 TensorFlow 實現模型 3.使用 TensorFlow 訓練模型 1.建立模型(Model) 如下為我們進行某項實驗獲得的一些實驗數據: 我們將這些數據放到一個二維圖上可以看的更直觀一些,如下,這些數據在圖中表現為一些離散的點 我們需要根據現有的這些數據歸納出一個通用模型,通過這個模型我們可以預測其他的輸入值產生的輸出值。 如下圖,我們選擇的...
google 機器學習速成課程 筆記1
學習谷歌的機器學習速成課程 標簽:標簽是我們要預測的事物,也就是y 特征:特征是輸入變量,也就是x,按照如下方式指定{x1,x2,x3….,xN},合適的特征應該是具體可量化的,for example,喜歡不是可觀察且可量化的指標,鞋的美觀程度也不是,但是鞋碼和用戶點擊鞋子描述的次數是一種具體可量化的指標。 樣本:指數據的特定實例,有標簽樣本和無標簽樣本 模型:模型定義了特征和標簽之...
實戰google深度學習框架(第四章學習筆記)
1.**函數常用的三個: tf.nn.relu tf.sigmoid tf.tanh 2.異或問題 3.監督學習的兩大種類: 分類問題和回歸問題 分類問題使用的損失函數為交叉熵 softmax的作用是:將神經網絡前向傳播得到的結果變成一個概率分布 4. 對每個元素取對數的命令 5.回歸問題的誤差函數: 均方誤差損失函數: y_代表標準答案 6.補充一個 https://blog.csdn.net/...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...