在线观看不卡亚洲电影_亚洲妓女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 個(gè)人學(xué)習(xí)心得
共享變量<a class="md-anchor" id="AUTOGENERATED-sharing-variables"></
應(yīng)用實(shí)例 <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運(yùn)作方式入門 <a class="md-anchor" id="AUTOGENERATED-tensorfl
常見問題 <a class="md-anchor" id="AUTOGENERATED-frequently-asked-que
MNIST機(jī)器學(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-
線程和隊(duì)列 <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
增加一個(gè)新 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的一些常見問題提供了答案,如果這里沒有你問題的答案,你可能會(huì)在社區(qū)資源中找到它。

內(nèi)容

常見問題

建立 TensorFlow graph

參看 建立 graph 的 API 文檔.

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

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

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

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

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

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

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

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

運(yùn)行 TensorFlow 計(jì)算過程。

參看 運(yùn)行 graph 的 API 文檔.

請?jiān)敿?xì)解釋 feeding 和 placeholders?

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

你常會(huì)碰到某些 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 是一個(gè) 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()

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

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

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

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

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

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

運(yùn)行時(shí)會(huì)并行計(jì)算圖的執(zhí)行的各個(gè)部分(parts of graph execution)嗎?

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

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

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

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

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

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

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

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

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

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

Variables

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

變量的生存期是?

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

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

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

Tensor shapes

參看 TensorShape API 文檔.

在 Python 中我怎么判斷一個(gè) tensor 的 shape ?

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

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

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

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

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

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

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

TensorBoard

我怎樣視覺化一個(gè) TensorFlow graph ?

參看 graph 的視覺化教程.

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

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

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

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

擴(kuò)展 TensorFlow

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

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

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

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

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

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

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

其他問題

TensorFlow 能使用 Python 3 嗎?

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

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

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

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

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

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