tensorflow存儲
A. tensorflow怎麼訓練tfrecords 數據集
基本使用
使用 TensorFlow, 你必須明白 TensorFlow:
使用圖 (graph) 來表示計算任務.
在被稱之為 會話 (Session) 的上下文 (context) 中執行圖.
使用 tensor 表示數據.
通過 變數 (Variable) 維護狀態.
使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數據.
綜述
TensorFlow 是一個編程系統, 使用圖來表示計算任務. 圖中的節點被稱之為 op
(operation 的縮寫). 一個 op 獲得 0 個或多個 Tensor, 執行計算,
產生 0 個或多個 Tensor. 每個 Tensor 是一個類型化的多維數組.
例如, 你可以將一小組圖像集表示為一個四維浮點數數組,
這四個維度分別是 [batch, height, width, channels].
一個 TensorFlow 圖描述了計算的過程. 為了進行計算, 圖必須在 會話 里被啟動.
會話 將圖的 op 分發到諸如 CPU 或 GPU 之類的 設備 上, 同時提供執行 op 的方法.
這些方法執行後, 將產生的 tensor 返回. 在 python 語言中, 返回的 tensor 是
numpy ndarray 對象; 在 C 和 C++ 語言中, 返回的 tensor 是
tensorflow::Tensor 實例.
計算圖
TensorFlow 程序通常被組織成一個構建階段和一個執行階段. 在構建階段, op 的執行步驟
被描述成一個圖. 在執行階段, 使用會話執行執行圖中的 op.
例如, 通常在構建階段創建一個圖來表示和訓練神經網路, 然後在執行階段反復執行圖中的訓練 op.
TensorFlow 支持 C, C++, Python 編程語言. 目前, TensorFlow 的 Python 庫更加易用,
它提供了大量的輔助函數來簡化構建圖的工作, 這些函數尚未被 C 和 C++ 庫支持.
三種語言的會話庫 (session libraries) 是一致的.
構建圖
構建圖的第一步, 是創建源 op (source op). 源 op 不需要任何輸入, 例如 常量 (Constant). 源 op 的輸出被傳遞給其它 op 做運算.
Python 庫中, op 構造器的返回值代表被構造出的 op 的輸出, 這些返回值可以傳遞給其它
op 構造器作為輸入.
TensorFlow Python 庫有一個默認圖 (default graph), op 構造器可以為其增加節點. 這個默認圖對
許多程序來說已經足夠用了. 閱讀 Graph 類 文檔
來了解如何管理多個圖.
import tensorflow as tf
# 創建一個常量 op, 產生一個 1x2 矩陣. 這個 op 被作為一個節點
# 加到默認圖中.
#
# 構造器的返回值代表該常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])
# 創建另外一個常量 op, 產生一個 2x1 矩陣.
matrix2 = tf.constant([[2.],[2.]])
# 創建一個矩陣乘法 matmul op , 把 'matrix1' 和 'matrix2' 作為輸入.
# 返回值 'proct' 代表矩陣乘法的結果.
proct = tf.matmul(matrix1, matrix2)
默認圖現在有三個節點, 兩個 constant() op, 和一個matmul() op. 為了真正進行矩陣相乘運算, 並得到矩陣乘法的
結果, 你必須在會話里啟動這個圖.
在一個會話中啟動圖
構造階段完成後, 才能啟動圖. 啟動圖的第一步是創建一個 Session 對象, 如果無任何創建參數,
會話構造器將啟動默認圖.
欲了解完整的會話 API, 請閱讀Session 類.
# 啟動默認圖.
sess = tf.Session()
# 調用 sess 的 'run()' 方法來執行矩陣乘法 op, 傳入 'proct' 作為該方法的參數.
# 上面提到, 'proct' 代表了矩陣乘法 op 的輸出, 傳入它是向方法表明, 我們希望取回
# 矩陣乘法 op 的輸出.
#
# 整個執行過程是自動化的, 會話負責傳遞 op 所需的全部輸入. op 通常是並發執行的.
#
# 函數調用 'run(proct)' 觸發了圖中三個 op (兩個常量 op 和一個矩陣乘法 op) 的執行.
#
# 返回值 'result' 是一個 numpy `ndarray` 對象.
result = sess.run(proct)
print result
# ==> [[ 12.]]
# 任務完成, 關閉會話.
sess.close()
Session 對象在使用完後需要關閉以釋放資源. 除了顯式調用 close 外, 也可以使用 "with" 代碼塊
來自動完成關閉動作.
with tf.Session() as sess:
result = sess.run([proct])
print result
在實現上, TensorFlow 將圖形定義轉換成分布式執行的操作, 以充分利用可用的計算資源(如 CPU
或 GPU). 一般你不需要顯式指定使用 CPU 還是 GPU, TensorFlow 能自動檢測. 如果檢測到 GPU, TensorFlow
會盡可能地利用找到的第一個 GPU 來執行操作.
如果機器上有超過一個可用的 GPU, 除第一個外的其它 GPU 默認是不參與計算的. 為了讓 TensorFlow
使用這些 GPU, 你必須將 op 明確指派給它們執行. withDevice 語句用來指派特定的 CPU 或 GPU
執行操作:
with tf.Session() as sess:
with tf.device("/gpu:1"):
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
proct = tf.matmul(matrix1, matrix2)
設備用字元串進行標識. 目前支持的設備包括:
"/cpu:0": 機器的 CPU.
"/gpu:0": 機器的第一個 GPU, 如果有的話.
"/gpu:1": 機器的第二個 GPU, 以此類推.
閱讀使用GPU章節, 了解 TensorFlow GPU 使用的更多信息.
互動式使用
文檔中的 Python 示例使用一個會話 Session 來
啟動圖, 並調用 Session.run() 方法執行操作.
為了便於使用諸如 IPython 之類的 Python 交互環境, 可以使用
InteractiveSession 代替
Session 類, 使用 Tensor.eval()
和 Operation.run() 方法代替
Session.run(). 這樣可以避免使用一個變數來持有會話.
# 進入一個互動式 TensorFlow 會話.
import tensorflow as tf
sess = tf.InteractiveSession()
x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])
# 使用初始化器 initializer op 的 run() 方法初始化 'x'
x.initializer.run()
# 增加一個減法 sub op, 從 'x' 減去 'a'. 運行減法 op, 輸出結果
sub = tf.sub(x, a)
print sub.eval()
# ==> [-2. -1.]
Tensor
TensorFlow 程序使用 tensor 數據結構來代表所有的數據, 計算圖中, 操作間傳遞的數據都是 tensor.
你可以把 TensorFlow tensor 看作是一個 n 維的數組或列表. 一個 tensor 包含一個靜態類型 rank, 和
一個 shape. 想了解 TensorFlow 是如何處理這些概念的, 參見
Rank, Shape, 和 Type.
變數
Variables for more details.
變數維護圖執行過程中的狀態信息. 下面的例子演示了如何使用變數實現一個簡單的計數器. 參見
變數 章節了解更多細節.
# 創建一個變數, 初始化為標量 0.
state = tf.Variable(0, name="counter")
# 創建一個 op, 其作用是使 state 增加 1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
# 啟動圖後, 變數必須先經過`初始化` (init) op 初始化,
# 首先必須增加一個`初始化` op 到圖中.
init_op = tf.initialize_all_variables()
# 啟動圖, 運行 op
with tf.Session() as sess:
# 運行 'init' op
sess.run(init_op)
# 列印 'state' 的初始值
print sess.run(state)
# 運行 op, 更新 'state', 並列印 'state'
for _ in range(3):
sess.run(update)
print sess.run(state)
# 輸出:
# 0
# 1
# 2
# 3
代碼中 assign() 操作是圖所描繪的表達式的一部分, 正如 add() 操作一樣. 所以在調用 run()
執行表達式之前, 它並不會真正執行賦值操作.
通常會將一個統計模型中的參數表示為一組變數. 例如, 你可以將一個神經網路的權重作為某個變數存儲在一個 tensor 中.
在訓練過程中, 通過重復運行訓練圖, 更新這個 tensor.
Fetch
為了取回操作的輸出內容, 可以在使用 Session 對象的 run() 調用 執行圖時, 傳入一些 tensor,
這些 tensor 會幫助你取回結果. 在之前的例子里, 我們只取回了單個節點 state, 但是你也可以取回多個
tensor:
input1 = tf.constant(3.0)
input2 = tf.constant(2.0)
input3 = tf.constant(5.0)
intermed = tf.add(input2, input3)
mul = tf.mul(input1, intermed)
with tf.Session() as sess:
result = sess.run([mul, intermed])
print result
# 輸出:
# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]
需要獲取的多個 tensor 值,在 op 的一次運行中一起獲得(而不是逐個去獲取 tensor)。
Feed
上述示例在計算圖中引入了 tensor, 以常量或變數的形式存儲. TensorFlow 還提供了 feed 機制, 該機制
可以臨時替代圖中的任意操作中的 tensor 可以對圖中任何操作提交補丁, 直接插入一個 tensor.
feed 使用一個 tensor 值臨時替換一個操作的輸出結果. 你可以提供 feed 數據作為 run() 調用的參數.
feed 只在調用它的方法內有效, 方法結束, feed 就會消失. 最常見的用例是將某些特殊的操作指定為 "feed" 操作,
標記的方法是使用 tf.placeholder() 為這些操作創建佔位符.
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1, input2)
with tf.Session() as sess:
print sess.run([output], feed_dict={input1:[7.], input2:[2.]})
# 輸出:
# [array([ 14.], dtype=float32)]
for a larger-scale example of feeds.
如果沒有正確提供 feed, placeholder() 操作將會產生錯誤.
MNIST 全連通 feed 教程
(source code)
給出了一個更大規模的使用 feed 的例子.
B. 如何製作tensorflow庫里的mnist那種格式的數據集
MNIST 數據集 混合的國家標准和技術 (簡稱 MNIST) 由紅外研究員,作為基準來比較不同的紅外演算法創建數據集。 其基本思想是如果你有你想要測試紅外的演算法或軟體的系統,可以運行您的演算法或系統針對 MNIST 的數據集和比較您的結果與其他系統以前發布成果。 數據集包含的共 70,000 圖像 ; 60,000 訓練圖像 (用於創建紅外模型) 和 10,000 測試圖像 (用於評估模型的精度)。 每個 MNIST 圖像是一個單一的手寫的數字字元的數字化的圖片。 每個圖像是 28 x 28 像素大小。 每個像素值是 0,表示白色,至 255,表示黑。 中間像素值表示的灰度級。 圖 2 顯示了訓練集的前八位的圖像。 對應於每個圖像的實際數字是顯然對人,但確定數字是非常困難的挑戰的計算機。 圖 2 首八 MNIST 訓練圖像 奇怪的是,訓練數據和測試數據均存儲在兩個文件中,而不是在單個文件中。 其中一個文件包含圖像的像素值和,另一個包含圖像的標簽信息 (0 到 9)。 每個的四個文件還包含標頭信息,和所有的四個文件都存儲在已經使用 gzip 格式壓縮的二進制格式。 注意在圖 1,該演示程序使用僅 60,000 項目訓練集。 測試集的格式是相同的訓練集。 MNIST 文件的主存儲庫是目前位於 yann/exdb/mnist。 培訓的像素數據存儲在文件火車-圖像-idx3-ubyte.gz 和培訓標簽數據存儲在文件火車-標簽-idx1-ubyte.gz。 若要運行該演示程序,您需要轉到 MNIST 的存儲庫站點,下載並解壓的兩個培訓數據文件。 將文件解壓縮,我用的免費的開源 7-Zip 實用程序。 創建 MNIST 查看器 若要創建 MNIST 演示程序,我發起了 Visual Studio,創建一個名為 MnistViewer 的新 C# Windows 窗體項目。 演示有沒有重大的.NET 版本依賴關系,因此,任何版本的 Visual Studio 應該工作。 模板代碼載入到 Visual Studio 編輯器後,我設置的 UI 控制項。 我添加了兩個 TextBox 控制項 (textBox1,textBox2) 要堅持兩個解壓後的培訓文件的路徑。 我添加一個按鈕控制項 (button1),並給了它一個標簽載入圖像。 我添加了兩個多個 TextBox 控制項 (textBox3,textBox4) 以保存當前圖像索引和下一個圖像索引的值。 我使用 Visual Studio 設計器,分別設置"NA"和"0,"這些控制項的初始值。 我添加了一個 ComboBox 控制項 (comboBox1) 的圖像放大倍數值。 使用設計器,我去到該控制項的項集合,添加字元串"1"到"10"。我添加了第二個按鈕控制項 (button2),並給了它一個標簽的顯示下一次。 我添加了 PictureBox 控制項 (pictureBox1),將其背景色屬性設置為 ControlDark,以便看到控制項的輪廓。 我將圖片框大小設置為 280 x 280 允許最多 10 倍的放大倍率 (回顧 MNIST 圖像是 28 x 28 像素為單位)。 我添加了第五個 (textBox5) 文本框以顯示十六進制值的圖像,然後將其多行屬性設置為 True 和其字體屬性設置為 8.25 磅 Courier New 和擴大其大小到 606 x 412。 而且,最後,我添加了一個列表框控制項 (listBox1) 的日誌記錄消息。 後放置 UI 控制項拖到 Windows 窗體,添加三個類范圍欄位: public partial class Form1 : Form { private string pixelFile = @"C:\MnistViewer\train-images.idx3-ubyte"; private string labelFile = @"C:\MnistViewer\train-labels.idx1-ubyte"; private DigitImage[] trainImages = null; ... 第一次兩個字元串指向解壓後的培訓數據文件的位置。 你會需要編輯這些要運行演示的兩個字元串。 第三個欄位是一個程序定義 DigitImage 對象的數組。 我編輯窗體的構造函數略成 textBox1 和 textBox2 地點的文件路徑,並給予放大倍數初始值 6: public Form1() { InitializeComponent(); textBox1.Text = pixelFile; textBox2.Text = labelFile; comboBox1.SelectedItem = "6"; this.ActiveControl = button1; } 我用的 ActiveControl 屬性來設置初始焦點到 button1 控制項,只是為了方便。
C. 如何理解android中tensorflow的介面
對於不熟悉開源框架的讀者,TensorFlow 是谷歌 2015 年底推出的深度學習框架,在開發者社區享有盛譽。去年,它已成為 GitHub 最受歡迎的機器學習開源項目。因其高度普及率,尤其是在 Python 生態圈中,TensorFlow 的功能變化會對全世界的機器學習開發者造成重大影響。
本月初,谷歌公布了 TensorFlow 1.0.0-alpha ,即 TensorFlow 1.0 的第一個草稿版本。近日,新的候選版本 TensorFlow 1.0.0-rc0 被發布出來,披露了更多技術細節,標志著我們離 完全體的 TensorFlow 1.0 更近一步。
雷鋒網消息,1.0 版本不僅為 TensorFlow 機器學習函數庫帶來多重升級,而且為 Python 和 Java 用戶使用 TensorFlow 做開發降低了難度。另外,新版本的漏洞修補也得到了改善。更有意思的是,由於對 TensorFlow 計算做優化的新編譯器,在智能手機上運行基於 TensorFlow 的機器學習 APP 將成為可能。
強化對 Python 支持,加入 Java API
由於 Python 是最常用的機器學習開發語言,TensorFlow 1.0 對 Python 交互作了重點改進Python API 得到升級,TensorFlow 使用的語法和隱喻(syntax、metaphor)與 Python 的能更好吻合,提升兩者之間的一致性。
雷鋒網獲知,該升級帶來了一個壞消息:現有 Python 應用將無法兼容。TensorFlow 開發者們已經發布了一個能把舊 TensorFlow API 轉化為新格式的腳本,但是該腳本無法解決所有問題很多情況下,開發者需要人工調整腳本。
TensorFlow 現已支持與 Python 3 兼容的 Docker 鏡像。對於所有 Python 用戶,TensorFlow 現在可以通過 Python 的原生軟體包管理器 pip 來安裝。這是提升 TensorFlow 可用性的關鍵一步,尤其對於那些使用原生 Python 應用分發、而非使用數據科學專用體系(比如 Anaconda)的用戶。
Java 是機器學習領域的另一個主流語言平台。此前,TensorFlow 並沒有對其支持,更沒有一系列對 Java 的捆綁,而新的 1.0 版本引入了一個 Java API。但雷鋒網提醒,它還遠未成熟,隨時可能會有變化。而且,你需要 Linux 或者 Mac OS 平台上的來源來開發 TensorFlow(你可以把這作為 Windows 端 TensorFlow 是二等公民的另一個證據)。
TensorFlow 1.0 的最大變化或許不是新語言支持或者新演算法,而是 XLA 全稱 Accelerated Linear Algebra,意為加速線性代數,是一個針對 TensorFlow 中線性代數運算的試驗性質編譯器。它通過生成既能運行於 GPU、又能在 CPU 運行的機器代碼,來加速數學計算。目前, XLA 只支持英偉達 GPU,但這與當下機器學習應用對 GPU 支持的現狀是一致的。
XLA 提升了 TensorFlow 的移動性。現有的、未經調整的 TensorFlow 程序只需創建一個後端即可在新硬體平台上運行。這么做的意義非同尋常 此前, IBM 就為它的 PowerAI 機器學習硬體解決方案加入了對 TensorFlow 的支持,前者由 Power8 CPU 和 GPU 混合運行。
TensorFlow 的工程師已經縮減了它的整體內存佔用和 APP 的存儲空間佔用。這些優化對各類硬體運行環境都有好處,但對於移動平台尤其重要。此前的 TensorFlow 版本已經加入了對安卓、iOS 和 Raspberry Pi(樹莓派微型電腦)硬體平台的支持,使得 TensorFlow 能在這類設備上處理諸如圖像分類之類的任務。
關於機器學習的討論往往會涉及高端硬體機器學習,尤其是深度學習,是發展高端硬體的重要推動力量,不管是定製 CPU、GPU 陣列、FPGA 還是支持雲端壞境的規模化硬體。但有理論認為,創造出能在普通智能手機上運行的機器學習模型,而無需 24 小時每時每刻的雲端支持,將會孵化出一系列新型應用。這便是TensorFlow 1.0 的野心之一。
D. 如何查看tensorflow版本與存儲位置
使用命令:
pip show tensorflow
即可,它將顯示已經安裝的tensorflow包的詳細信息,我的顯示結果如下:
Name: tensorflow
Version: 1.4.0
Summary: TensorFlow helps the tensors flow
Home-page: https://www.tensorflow.org/
Author: Google Inc.
Author-email: [email protected]
License: Apache 2.0
Location: /usr/lib/python3.6/site-packages
Requires: enum34, six, tensorflow-tensorboard, numpy, wheel, protobuf
其中Version是版本號,Location是tensorflow的位置。
E. 改變tensorflow變數初始化問題,怎麼解決
當訓練模型時,用變數來存儲和更新參數。變數包含張量 (Tensor)存放於內存的緩存區。建模時它們需要被明確地初始化,模型訓練後它們必須被存儲到磁碟。這些變數的值可在之後模型訓練和分析是被載入。
F. 如何用Tensorflow開發一個簡單的語音識別器
基本使用使用TensorFlow,你必須明白TensorFlow:使用圖(graph)來表示計算任務.在被稱之為會話(Session)的上下文(context)中執行圖.使用tensor表示數據.通過變數(Variable)維護狀態.使用feed和fetch可以為任意的操作(arbitraryoperation)賦值或者從其中獲取數據.綜述TensorFlow是一個編程系統,使用圖來表示計算任務.圖中的節點被稱之為op(operation的縮寫).一個op獲得0個或多個Tensor,執行計算,產生0個或多個Tensor.每個Tensor是一個類型化的多維數組.例如,你可以將一小組圖像集表示為一個四維浮點數數組,這四個維度分別是[batch,height,width,channels].一個TensorFlow圖描述了計算的過程.為了進行計算,圖必須在會話里被啟動.會話將圖的op分發到諸如CPU或GPU之類的設備上,同時提供執行op的方法.這些方法執行後,將產生的tensor返回.在Python語言中,返回的tensor是numpyndarray對象;在C和C++語言中,返回的tensor是tensorflow::Tensor實例.計算圖TensorFlow程序通常被組織成一個構建階段和一個執行階段.在構建階段,op的執行步驟被描述成一個圖.在執行階段,使用會話執行執行圖中的op.例如,通常在構建階段創建一個圖來表示和訓練神經網路,然後在執行階段反復執行圖中的訓練op.TensorFlow支持C,C++,Python編程語言.目前,TensorFlow的Python庫更加易用,它提供了大量的輔助函數來簡化構建圖的工作,這些函數尚未被C和C++庫支持.三種語言的會話庫(sessionlibraries)是一致的.構建圖構建圖的第一步,是創建源op(sourceop).源op不需要任何輸入,例如常量(Constant).源op的輸出被傳遞給其它op做運算.Python庫中,op構造器的返回值代表被構造出的op的輸出,這些返回值可以傳遞給其它op構造器作為輸入.TensorFlowPython庫有一個默認圖(defaultgraph),op構造器可以為其增加節點.這個默認圖對許多程序來說已經足夠用了.閱讀Graph類文檔來了解如何管理多個圖.importtensorflowastf#創建一個常量op,產生一個1x2矩陣.這個op被作為一個節點#加到默認圖中.##構造器的返回值代表該常量op的返回值.matrix1=tf.constant([[3.,3.]])#創建另外一個常量op,產生一個2x1矩陣.matrix2=tf.constant([[2.],[2.]])#創建一個矩陣乘法matmulop,把'matrix1'和'matrix2'作為輸入.#返回值'proct'代表矩陣乘法的結果.proct=tf.matmul(matrix1,matrix2)默認圖現在有三個節點,兩個constant()op,和一個matmul()op.為了真正進行矩陣相乘運算,並得到矩陣乘法的結果,你必須在會話里啟動這個圖.在一個會話中啟動圖構造階段完成後,才能啟動圖.啟動圖的第一步是創建一個Session對象,如果無任何創建參數,會話構造器將啟動默認圖.欲了解完整的會話API,請閱讀Session類.#啟動默認圖.sess=tf.Session()#調用sess的'run()'方法來執行矩陣乘法op,傳入'proct'作為該方法的參數.#上面提到,'proct'代表了矩陣乘法op的輸出,傳入它是向方法表明,我們希望取回#矩陣乘法op的輸出.##整個執行過程是自動化的,會話負責傳遞op所需的全部輸入.op通常是並發執行的.##函數調用'run(proct)'觸發了圖中三個op(兩個常量op和一個矩陣乘法op)的執行.##返回值'result'是一個numpy`ndarray`對象.result=sess.run(proct)printresult#==>[[12.]]#任務完成,關閉會話.sess.close()Session對象在使用完後需要關閉以釋放資源.除了顯式調用close外,也可以使用"with"代碼塊來自動完成關閉動作.withtf.Session()assess:result=sess.run([proct])printresult在實現上,TensorFlow將圖形定義轉換成分布式執行的操作,以充分利用可用的計算資源(如CPU或GPU).一般你不需要顯式指定使用CPU還是GPU,TensorFlow能自動檢測.如果檢測到GPU,TensorFlow會盡可能地利用找到的第一個GPU來執行操作.如果機器上有超過一個可用的GPU,除第一個外的其它GPU默認是不參與計算的.為了讓TensorFlow使用這些GPU,你必須將op明確指派給它們執行.withDevice語句用來指派特定的CPU或GPU執行操作:withtf.Session()assess:withtf.device("/gpu:1"):matrix1=tf.constant([[3.,3.]])matrix2=tf.constant([[2.],[2.]])proct=tf.matmul(matrix1,matrix2)設備用字元串進行標識.目前支持的設備包括:"/cpu:0":機器的CPU."/gpu:0":機器的第一個GPU,如果有的話."/gpu:1":機器的第二個GPU,以此類推.閱讀使用GPU章節,了解TensorFlowGPU使用的信息.互動式使用文檔中的Python示例使用一個會話Session來啟動圖,並調用Session.run()方法執行操作.為了便於使用諸如IPython之類的Python交互環境,可以使用InteractiveSession代替Session類,使用Tensor.eval()和Operation.run()方法代替Session.run().這樣可以避免使用一個變數來持有會話.#進入一個互動式TensorFlow會話.importtensorflowastfsess=tf.InteractiveSession()x=tf.Variable([1.0,2.0])a=tf.constant([3.0,3.0])#使用初始化器initializerop的run()方法初始化'x'x.initializer.run()#增加一個減法subop,從'x'減去'a'.運行減法op,輸出結果sub=tf.sub(x,a)printsub.eval()#==>[-2.-1.]TensorTensorFlow程序使用tensor數據結構來代表所有的數據,計算圖中,操作間傳遞的數據都是tensor.你可以把TensorFlowtensor看作是一個n維的數組或列表.一個tensor包含一個靜態類型rank,和一個shape.想了解TensorFlow是如何處理這些概念的,參見Rank,Shape,和Type.變數Variablesformoredetails.變數維護圖執行過程中的狀態信息.下面的例子演示了如何使用變數實現一個簡單的計數器.參見變數章節了解細節.#創建一個變數,初始化為標量0.state=tf.Variable(0,name="counter")#創建一個op,其作用是使state增加1one=tf.constant(1)new_value=tf.add(state,one)update=tf.assign(state,new_value)#啟動圖後,變數必須先經過`初始化`(init)op初始化,#首先必須增加一個`初始化`op到圖中.init_op=tf.initialize_all_variables()#啟動圖,運行opwithtf.Session()assess:#運行'init'opsess.run(init_op)#列印'state'的初始值printsess.run(state)#運行op,更新'state',並列印'state'for_inrange(3):sess.run(update)printsess.run(state)#輸出:#0#1#2#3代碼中assign()操作是圖所描繪的表達式的一部分,正如add()操作一樣.所以在調用run()執行表達式之前,它並不會真正執行賦值操作.通常會將一個統計模型中的參數表示為一組變數.例如,你可以將一個神經網路的權重作為某個變數存儲在一個tensor中.在訓練過程中,通過重復運行訓練圖,更新這個tensor.Fetch為了取回操作的輸出內容,可以在使用Session對象的run()調用執行圖時,傳入一些tensor,這些tensor會幫助你取回結果.在之前的例子里,我們只取回了單個節點state,但是你也可以取回多個tensor:input1=tf.constant(3.0)input2=tf.constant(2.0)input3=tf.constant(5.0)intermed=tf.add(input2,input3)mul=tf.mul(input1,intermed)withtf.Session()assess:result=sess.run([mul,intermed])printresult#輸出:#[array([21.],dtype=float32),array([7.],dtype=float32)]需要獲取的多個tensor值,在op的一次運行中一起獲得(而不是逐個去獲取tensor)。Feed上述示例在計算圖中引入了tensor,以常量或變數的形式存儲.TensorFlow還提供了feed機制,該機制可以臨時替代圖中的任意操作中的tensor可以對圖中任何操作提交補丁,直接插入一個tensor.feed使用一個tensor值臨時替換一個操作的輸出結果.你可以提供feed數據作為run()調用的參數.feed只在調用它的方法內有效,方法結束,feed就會消失.最常見的用例是將某些特殊的操作指定為"feed"操作,標記的方法是使用tf.placeholder()為這些操作創建佔位符.input1=tf.placeholder(tf.float32)input2=tf.placeholder(tf.float32)output=tf.mul(input1,input2)withtf.Session()assess:printsess.run([output],feed_dict={input1:[7.],input2:[2.]})#輸出:#[array([14.],dtype=float32)]foralarger-scaleexampleoffeeds.如果沒有正確提供feed,placeholder()操作將會產生錯誤.MNIST全連通feed教程(sourcecode)給出了一個更大規模的使用feed的例子.
G. 怎樣搭建tensorflow開發環境
TensorFlow 使用的語法和隱喻(syntax.0 的最大變化或許不是新語言支持或者新演算法。這是提升 TensorFlow 可用性的關鍵一步,但對於移動平台尤其重要,不管是定製 CPU,TensorFlow 1,由於對 TensorFlow 計算做優化的新編譯器,而且為 Python 和 Java 用戶使用 TensorFlow 做開發降低了難度,披露了更多技術細節。而且:現有 Python 應用將無法兼容,即 TensorFlow 1.0 的野心之一,更沒有一系列對 Java 的捆綁,標志著我們離 完全體的 TensorFlow 1,它已成為 GitHub 最受歡迎的機器學習開源項目,使得 TensorFlow 能在這類設備上處理諸如圖像分類之類的任務。因其高度普及率,谷歌公布了 TensorFlow 1.0,開發者需要人工調整腳本,創造出能在普通智能手機上運行的機器學習模型、GPU 陣列。
TensorFlow 1,TensorFlow 並沒有對其支持。
雷鋒網獲知,新版本的漏洞修補也得到了改善、未經調整的 TensorFlow 程序只需創建一個後端即可在新硬體平台上運行、FPGA 還是支持雲端壞境的規模化硬體、而非使用數據科學專用體系(比如 Anaconda)的用戶,TensorFlow 是谷歌 2015 年底推出的深度學習框架。
對於不熟悉開源框架的讀者。這便是TensorFlow 1。但雷鋒網提醒,是發展高端硬體的重要推動力量, XLA 只支持英偉達 GPU,但是該腳本無法解決所有問題很多情況下,尤其對於那些使用原生 Python 應用分發,隨時可能會有變化,尤其是深度學習。對於所有 Python 用戶。TensorFlow 開發者們已經發布了一個能把舊 TensorFlow API 轉化為新格式的腳本,TensorFlow 現在可以通過 Python 的原生軟體包管理器 pip 來安裝。
本月初,1,來加速數學計算。此前。
關於機器學習的討論往往會涉及高端硬體機器學習,但這與當下機器學習應用對 GPU 支持的現狀是一致的.0 版本不僅為 TensorFlow 機器學習函數庫帶來多重升級。
雷鋒網消息,是一個針對 TensorFlow 中線性代數運算的試驗性質編譯器。現有的,它還遠未成熟。近日,在智能手機上運行基於 TensorFlow 的機器學習 APP 將成為可能。去年.0-alpha .0 的第一個草稿版本、metaphor)與 Python 的能更好吻合、iOS 和 Raspberry Pi(樹莓派微型電腦)硬體平台的支持.0 更近一步,前者由 Power8 CPU 和 GPU 混合運行.0 版本引入了一個 Java API,TensorFlow 終於將迎來史上最重大更新,尤其是在 Python 生態圈中.0,而新的 1:TensorFlow 1。此前的 TensorFlow 版本已經加入了對安卓,將會孵化出一系列新型應用。
強化對 Python 支持,該升級帶來了一個壞消息。
TensorFlow 的工程師已經縮減了它的整體內存佔用和 APP 的存儲空間佔用。它通過生成既能運行於 GPU,加入 Java API
由於 Python 是最常用的機器學習開發語言.0-rc0 被發布出來。
XLA 提升了 TensorFlow 的移動性,提升兩者之間的一致性, IBM 就為它的 PowerAI 機器學習硬體解決方案加入了對 TensorFlow 的支持,你需要 Linux 或者 Mac OS 平台上的來源來開發 TensorFlow(你可以把這作為 Windows 端 TensorFlow 是二等公民的另一個證據),在開發者社區享有盛譽。另外在發布逾一周年之際、又能在 CPU 運行的機器代碼。更有意思的是。
Java 是機器學習領域的另一個主流語言平台。這些優化對各類硬體運行環境都有好處,TensorFlow 的功能變化會對全世界的機器學習開發者造成重大影響,而無需 24 小時每時每刻的雲端支持。
TensorFlow 現已支持與 Python 3 兼容的 Docker 鏡像,新的候選版本 TensorFlow 1,意為加速線性代數。目前。但有理論認為.0 對 Python 交互作了重點改進Python API 得到升級.0。這么做的意義非同尋常 此前,而是 XLA 全稱 Accelerated Linear Algebra
H. tensorflow存儲session有什麼用
基本使用 使用 TensorFlow, 你必須明白 TensorFlow: 使用圖 (graph) 來表示計算任務. 在被稱之為 會話 (Session) 的上下文 (context) 中執行圖. 使用 tensor 表示數據. 通過 變數 (Variable) 維護狀態. 使用 feed 和 fetch 可以為任意的操作