在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 人工智能/ 常見問題 <a class="md-anchor" id="AUTOGENERATED-frequently-asked-que
BibTex 引用<a class="md-anchor" id="AUTOGENERATED-bibtex-citation"
術(shù)語表
自定義數(shù)據(jù)讀取 <a class="md-anchor" id="AUTOGENERATED-custom-data-reade
使用 GPUs <a class="md-anchor" id="AUTOGENERATED-using-gpus"></a>
Vector Representations of Words <a class="md-anchor" id="AUTOGEN
TensorFlow 個人學(xué)習(xí)心得
共享變量<a class="md-anchor" id="AUTOGENERATED-sharing-variables"></
應(yīng)用實例 <a class="md-anchor" id="AUTOGENERATED-example-uses"></a>
其他資源 <a class="md-anchor" id="AUTOGENERATED-additional-resources
偏微分方程 <a class="md-anchor" id="AUTOGENERATED-partial-differentia
TensorBoard:可視化學(xué)習(xí) <a class="md-anchor" id="AUTOGENERATED-tensorb
TensorFlow運作方式入門 <a class="md-anchor" id="AUTOGENERATED-tensorfl
常見問題 <a class="md-anchor" id="AUTOGENERATED-frequently-asked-que
MNIST機器學(xué)習(xí)入門 <a class="md-anchor" id="AUTOGENERATED-mnist-for-ml-
曼德布洛特(Mandelbrot)集合 <a class="md-anchor" id="AUTOGENERATED-mande
變量:創(chuàng)建、初始化、保存和加載
TensorBoard: 圖表可視化 <a class="md-anchor" id="AUTOGENERATED-tensor
簡介 <a class="md-anchor" id="AUTOGENERATED-introduction"></a>
張量的階、形狀、數(shù)據(jù)類型<a class="md-anchor" id="AUTOGENERATED-tensor-ranks-
線程和隊列 <a class="md-anchor" id="AUTOGENERATED-threading-and-queue
下載與安裝 <a class="md-anchor" id="AUTOGENERATED-download-and-setup"
常見問題匯總
綜述
綜述 Overview
TensorFlow 相關(guān)資源
數(shù)據(jù)讀取 <a class="md-anchor" id="AUTOGENERATED-reading-data"></a>
遞歸神經(jīng)網(wǎng)絡(luò) <a class="md-anchor" id="AUTOGENERATED-recurrent-neural-n
深入MNIST <a class="md-anchor" id="AUTOGENERATED-deep-mnist-for-ex
增加一個新 Op <a class="md-anchor" id="AUTOGENERATED-adding-a-new-op"
卷積神經(jīng)網(wǎng)絡(luò) <a class="md-anchor" id="AUTOGENERATED-convolutional-neur
基本使用 <a class="md-anchor" id="AUTOGENERATED-basic-usage"></a>
MNIST 數(shù)據(jù)下載 <a class="md-anchor" id="AUTOGENERATED-mnist-data-dow

常見問題 <a class="md-anchor" id="AUTOGENERATED-frequently-asked-que

此文檔對關(guān)于TensorFlow的一些常見問題提供了答案,如果這里沒有你問題的答案,你可能會在社區(qū)資源中找到它。

內(nèi)容

常見問題

建立 TensorFlow graph

參看 建立 graph 的 API 文檔.

為什么c = tf.matmul(a, b) 不立即執(zhí)行矩陣相乘?

在 TensorFlow 的 Python API 中, a, b, and c 都是 Tensor 對象. 一個 Tensor 對象是一個操作(operation)結(jié)果的字符別名,它實際上并不儲存操作(operation)輸出結(jié)果的值。 TensorFlow 鼓勵用戶去建立復(fù)雜的表達式(如整個神經(jīng)網(wǎng)絡(luò)及其梯度)來形成 data flow graph 。 然后你可以將整個 data flow graph 的計算過程交給一個 TensorFlow 的 Session, 此 Session 可以運行整個計算過程,比起操作(operations)一條一條的執(zhí)行效率高的多。

設(shè)備是如何命名的?

對CPU設(shè)備而言,支持的設(shè)備名是"/device:CPU:0" (或 "/cup:0"),對第 i 個 GPU 設(shè)備是"/device:GPU:i" (或 "/gpu:i")

如何在指定的設(shè)備上運行操作(operations)?

with tf.device(name): context 中創(chuàng)建操作(operation),這樣可以在指定的設(shè)備上運行操作(operation)。 關(guān)于 TensorFlow 怎樣將操作(operations)分配給設(shè)備的細節(jié),參看 TensorFlow使用 GPU ; 使用多 GPU 的示范實例參看 CIFAR-10 教程。

可用的 tensor 有哪些不同的類型?

TensorFlow 支持許多種不同的數(shù)據(jù)類型和 tensor shape ,更多細節(jié)請參看 ranks, shapes, and type reference

運行 TensorFlow 計算過程。

參看 運行 graph 的 API 文檔.

請詳細解釋 feeding 和 placeholders?

Feeding 是 TensorFlow Session API 的一種機制,它允許你在運行時用不同的值替換一個或多個 tensor 的值。 Session.run() 的參數(shù) feed_dict 是一個字典, 它將 Tensor 對象映射為 numpy 的數(shù)組(和一些其他類型)。 在執(zhí)行 step 時,這些數(shù)組就是 tensor 的值。

你常會碰到某些 tensor 總是有值的,比如 inputs。 tf.placeholder() 操作(operation)允許你定義一種必須提供值的 tensor ,你也可以隨意限定它們的 shape。關(guān)于如何使用 placelolders 和 feeding 為神經(jīng)網(wǎng)絡(luò)提供訓(xùn)練數(shù)據(jù)的例子,請參看初學(xué)者的 MNIST 教程

Session.run()Tensor.eval() 有什么區(qū)別?

如果 t 是一個 Tensor 對象, t.eval() 就是 sess.run(t)sess 是當(dāng)前默認(rèn) session)的簡寫。 以下兩段小程序是等效的:

# 使用 `Session.run()`.
sess = tf.Session()
c = tf.constant(5.0)
print sess.run(c)

# 使用 `Tensor.eval()`.
c = tf.constant(5.0)
with tf.Session():
  print c.eval()

在第二個例子中, session 的作用就象 context manager , context manager 在 with 塊的生存期,將 session 作為默認(rèn)的 session。對簡單應(yīng)用的情形(如單元測試),context manager 的方法可以得到更簡潔的代碼; 如果你的代碼要處理多個 graph 和 session ,更直白的方式可能是顯式調(diào)用 Session.run()

Sessions 有生存期嗎? 調(diào)用時產(chǎn)生的 tensors 呢?

Session 能夠占有資源,例如 variablesqueues, 和 readers; 這些資源會使用相當(dāng)大量的內(nèi)存。 當(dāng)調(diào)用Session.close() 關(guān)閉 session 后,這些資源(和相關(guān)的內(nèi)存)就被釋放了。

作為調(diào)用 Session.run() 過程的一部分所創(chuàng)建的 tensors, 會在調(diào)用時或調(diào)用結(jié)束前釋放。

我可以在多個計算機上運行分布式的訓(xùn)練嗎?

最初的 TensorFlow 開源版本支持單一計算機內(nèi)的多設(shè)備(CPUs 和 GPUs)。 我們也正在致力于一個分布式的版本:如果你有興趣,請告知我們,這樣我們可以做相應(yīng)的調(diào)整。

運行時會并行計算圖的執(zhí)行的各個部分(parts of graph execution)嗎?

TensorFlow 運行時會在許多不同的層面(dimensions)并行圖的執(zhí)行(graph execution):

  • 在一個CPU中用多核或是一個GPU中用多線程來并行許多單獨的操作(operation)。
  • 在 TensorFlow graph 中各個獨立的節(jié)點可以在多個設(shè)備上并行,這樣就提供了加速的可能。CIFAR-10 用多 GPU 訓(xùn)練.
  • Session API 允許并行執(zhí)行多并發(fā)的 steps (如 調(diào)用 Session.run())。 如果單一的 step 不使用你計算機中所有的資源,這種方法可以使運行時有更高的吞吐量。

TensorFlow 支持哪些客戶端編程語言?

TensorFlow 被設(shè)計成為支持多種客戶端語言。當(dāng)前支持最好的客戶端語言是 Python。 C++ 客戶端 API 提供了啟動 graph 和運行 steps 的接口; 我們還有一個 用 C++ 建立 graph 的 API,此 API 是實驗性的。

從社區(qū)的利益出發(fā),我們想要支持更多的客戶端語言。 TensorFlow 有一個 基于 C 的客戶端 API,它使得用許多不同的語言創(chuàng)建客戶端變得很容易。我們請大家在新語言綁定上做出努力。

TensorFlow 會利用我計算機上所有可用的設(shè)備(GPUs 和 CPUs)嗎?

TensorFlow 支持多 GPU 和 CPU。 有關(guān) TensorFlow 如何將操作(operations)分配到設(shè)備的細節(jié)請參看 TensorFlow 如何使用 GPUs 的文檔,有關(guān)使用多 GPU 的示范實例請參看 CIFAR-10 教程

請注意, TensorFlow 只使用計算能力(compute capability)大于 3.5 的 GPU 設(shè)備。

當(dāng)使用一個 reader 或 一個 queue 時,為什么 Session.run() 會掛起?

reader 類和 queue 類提供特殊的操作(operations),這些操作(operations)在有可用的輸入(對有界隊列則是空閑空間)前會 阻塞 。使用這些操作(operations)你可以創(chuàng)建復(fù)雜的輸入流水線(input pipelines) ,不過,這會使 TensorFlow 的計算過程更復(fù)雜。有關(guān)如何使用這些操作(operations)的更多信息請參看 how-to 文檔中的使用 QueueRunner 對象來控制 queues 和 readers。

Variables

參看 Variables變量作用域 的 how-to 文檔,還有關(guān)于變量的 API 文檔

變量的生存期是?

在某一 session 中,當(dāng)你一開始運行 tf.Variable.initializer 操作(operation)時,變量就會被創(chuàng)建。此 session 關(guān)閉后它就被摧毀(destroyed)了。

并發(fā)讀取或存入變量時會是什么情況?

變量可以進行并發(fā)的讀和寫操作(operation)。由于變量是并發(fā)(concurrently)更新的, 所以從一個變量中讀出的值可能會改變。在不互斥的條件下,對一個變量的并發(fā)的許多賦值操作(operation)是默認(rèn)允許運行的。在對一個變量賦值時,如果想要加鎖,可以將 use_locking=True 傳遞給 Variable.assign()

Tensor shapes

參看 TensorShape API 文檔.

在 Python 中我怎么判斷一個 tensor 的 shape ?

在 TensorFlow 中,一個 tensor 具備靜態(tài)和動態(tài)兩種 shape 。靜態(tài)的 shape 可以用 tf.Tensor.get_shape() 方法讀出:這種 shape 是由此 tensor 在創(chuàng)建時使用的操作(operations)推導(dǎo)得出的,可能是 partially complete 的。如果靜態(tài) shape 沒有完整定義(not fully defined)的話,則一個 tensor 的動態(tài) shape 可通過求 tf.shape(t) 的值得到。

x.set_shape()x = tf.reshape(x) 有什么區(qū)別?

tf.Tensor.set_shape() 方法(method)會更新(updates)一個 Tensor 對象的靜態(tài) shape ,當(dāng)靜態(tài) shape 信息不能夠直接推導(dǎo)得出的時候,此方法常用來提供額外的 shape 信息。它不改變此 tensor 動態(tài) shape 的信息。

tf.reshape() 操作(operation)會以不同的動態(tài) shape 創(chuàng)建一個新的 tensor。

我怎么創(chuàng)建這樣一個 graph ,它在批次大小可變(variable batch sizes)的情形下也可以正常運作?

如果能夠創(chuàng)建一個 graph ,在批次大小可變(variable batch sizes)的情形下也可以正常運作將會是十分有用的,例如可以使用相同的代碼完成(?。┡坑?xùn)練((mini-)batch training)和單例推導(dǎo)(single-instance inference)。這樣生成的 graph 可以保存起來當(dāng)作協(xié)議緩存(protocol buffer),也可以導(dǎo)入至其他的程序。

創(chuàng)建一個可變大小的 graph 時,要記住最重要的事情是不要將批次大小(batch size)編碼成為 Python 常數(shù),而是用一個字符性(symbolic)的 Tensor 來表示。下面的提示可能會有用:

TensorBoard

我怎樣視覺化一個 TensorFlow graph ?

參看 graph 的視覺化教程.

向 TensorBoard 發(fā)送數(shù)據(jù)的最簡單的方法是什么?

給你的 TensorFlow graph 增加 summary 操作(ops),接著用 SummaryWriter 將這些 summaries 寫入一個 log directory。然后用以下命令啟動 TensorBoard 。

`python tensorflow/tensorboard/tensorboard.py --logdir=path/to/log-directory`

更多細節(jié)請參看 Summaries 和 TensorBoard 教程。

擴展 TensorFlow

參看有關(guān)向 TensorFlow 添加新操作(oprations) 的 how-to 文檔。

我的數(shù)據(jù)是自定義格式,要怎樣用 TensorFlow 來讀取它?

有兩種主要的操作(operation)來處理自定義格式的數(shù)據(jù)。

較簡單的方法:用 Python 編寫一段分詞的代碼(parsing code),將數(shù)據(jù)轉(zhuǎn)換成為 numpy array,然后用此數(shù)據(jù)把一個 [tf.placeholder()] (../api_docs/python/io_ops.md#placeholder) 傳送給一個 tensor 。更多的細節(jié)參見 使用 placeholders 進行輸入 的相關(guān)文檔。這個方法比較容易實現(xiàn),不過分詞的部分會成為性能的瓶頸。

更高效的方法是添加一個用 C++ 編寫的操作(op),用這個操作(operation)來對你的數(shù)據(jù)格式進行分詞(parse)。 新數(shù)據(jù)格式處理指南中有更多相關(guān)步驟的信息。

我如何定義操作(operation)使得它能夠接受可變數(shù)量的輸入?

TensorFlow 的操作(operation)注冊機制允許你定義幾種輸入:單獨的 tensor,一列相同類型的 tensors (例如把一個可變長列表中的 tensors 相加), 一列不同類型的 tensors (例如將一個 tuple 中的 tensors 入隊(enqueue))。有關(guān)怎樣定義這些不同的輸入類型的更多細節(jié),請參看添加具有一列輸入或輸出的操作(op)的相關(guān)文檔。

其他問題

TensorFlow 能使用 Python 3 嗎?

我們只用 Python 2.7 進行了測試。我們了解對 Python 3 的兼容性來說,還需要有一些修改,歡迎大家朝這個方向多努力。

TensorFlow 的代碼風(fēng)格有什么規(guī)則?

TensorFlow Python API 遵循 PEP8 慣例。 * 特別的,我們使用 CamelCase 格式作為類名, snake_case 格式作為方程名, 方法名, 和屬性名。我們也遵循 Google Python style guide。

TensorFlow C++ 代碼遵循 Google C++ style guide

(* 有一條例外: 我們使用 2 空格縮進而不是 4 空格縮進)

原文:Frequently Asked Questions 翻譯:Terence Cooper 校對:Wiki