在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Tensorflow不是一個(gè)普通的Python庫(kù)

zhKF_jqr_AI ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-02 14:47 ? 次閱讀

編者按:2017年夏季,CMU CS碩士生Jacob Buckman入選Google AI居留計(jì)劃,在谷歌總部開(kāi)啟了自己為期12月的培訓(xùn)生活,主攻NLP和強(qiáng)化學(xué)習(xí)。Jacob擁有豐富的編程經(jīng)驗(yàn),而且在機(jī)器學(xué)習(xí)上也造詣?lì)H多。雖然從未接觸過(guò)Tensorflow,但他相信依靠自己的學(xué)識(shí)背景,掌握一個(gè)工具是很輕松的一件事。很可惜,現(xiàn)實(shí)打了他的臉……

簡(jiǎn)介

自發(fā)布三年來(lái),Tensorflow已經(jīng)成為深度學(xué)習(xí)生態(tài)系統(tǒng)的基石,然而相比PyTorch、DyNet這樣基于動(dòng)態(tài)圖“define-by-run”的庫(kù),它對(duì)初學(xué)者來(lái)說(shuō)卻并不直觀。

從線性回歸、MNIST分類到機(jī)器翻譯,Tensorflow的教程無(wú)處不在,它們是幫助新手開(kāi)啟項(xiàng)目的優(yōu)質(zhì)資源,也是新人接觸機(jī)器學(xué)習(xí)的敲門磚。但對(duì)于機(jī)器學(xué)習(xí)還未涉足的空白領(lǐng)域,如果開(kāi)發(fā)者想做一些原創(chuàng)性的突破,Tensorflow可能會(huì)讓他們望而生畏。

本文的目的是填補(bǔ)這一領(lǐng)域的空白,文章內(nèi)容將緊緊圍繞一般方法,并解釋支撐Tensorflow的基本概念,而不是專注于某個(gè)特定任務(wù)。掌握這些概念后,開(kāi)發(fā)者可以更直觀地用Tensorflow進(jìn)行深度學(xué)習(xí)研究。

注:本教程適合在編程和機(jī)器學(xué)習(xí)上有一定經(jīng)驗(yàn),且必須要用到Tensorflow的開(kāi)發(fā)者。

了解Tensorflow

Tensorflow不是一個(gè)普通的Python庫(kù)

大多數(shù)Python庫(kù)其實(shí)是Python的擴(kuò)展。當(dāng)你導(dǎo)入一個(gè)庫(kù)時(shí),你得到的是一組變量、函數(shù)和類,它們實(shí)際上只是充當(dāng)代碼的“工具箱”,滿足開(kāi)發(fā)者的現(xiàn)實(shí)需要。但Tensorflow不是。如果我們一開(kāi)始就抱著如何和代碼交互的想法去研究Tensorflow,那就相當(dāng)于在本質(zhì)上走入歧途。

要說(shuō)Python和Tensorflow之間的關(guān)系,我們可以把它簡(jiǎn)單類比成Javascript和HTML。Javascript是一種用途廣泛的編程語(yǔ)言,我們可以用它實(shí)現(xiàn)很多東西。而HTML是一個(gè)框架,可以表示一些抽象計(jì)算(比如描述網(wǎng)頁(yè)上呈現(xiàn)的內(nèi)容)。當(dāng)用戶打開(kāi)一個(gè)網(wǎng)頁(yè)時(shí),Javascript的作用是使他看到HTML對(duì)象,并且在網(wǎng)頁(yè)迭代時(shí)用新的HTML對(duì)象代替舊的對(duì)象。

和HTML類似,Tensorflow也是一個(gè)用于表示抽象計(jì)算的框架。當(dāng)我們用Python操作Tensorflow時(shí),代碼做的第一件事是組裝計(jì)算圖,第二件事是和計(jì)算圖進(jìn)行交互(Tensorflow里的會(huì)話sessions)。但計(jì)算圖不在變量?jī)?nèi)部,而在全局名稱空間中。正如莎士比亞當(dāng)年說(shuō)過(guò):所有RAM都是一個(gè)階段,所有變量都只是指針。(莎士比亞一臉懵逼)

第一個(gè)關(guān)鍵概念:計(jì)算圖

在瀏覽Tensorflow文檔時(shí),你會(huì)發(fā)現(xiàn)其中有大量關(guān)于“graphs”和“nodes”的描述。如果足夠細(xì)心,也許你也已經(jīng)在圖和會(huì)話這個(gè)頁(yè)面找到了所有關(guān)于數(shù)據(jù)流圖的詳細(xì)介紹。這個(gè)頁(yè)面的內(nèi)容是我們下文要重點(diǎn)解釋的,不同的是,官方文檔的表述充滿“技術(shù)感”,而我們會(huì)犧牲一些技術(shù)細(xì)節(jié),重點(diǎn)捕捉其中的直覺(jué)。

那么什么是計(jì)算圖?事實(shí)上,計(jì)算圖表示的是全局?jǐn)?shù)據(jù)結(jié)構(gòu):它一個(gè)有向圖,包含數(shù)據(jù)計(jì)算流程的所有信息

我們先來(lái)看一個(gè)示例:

import tensorflow as tf

計(jì)算圖:

導(dǎo)入Tensorflow后,我們得到了一個(gè)空白的計(jì)算圖,表示一個(gè)孤立的、空白的全局變量。在這個(gè)基礎(chǔ)上,我們?cè)龠M(jìn)行一些“Tensorflow操作”:

代碼:

import tensorflow as tf

two_node = tf.constant(2)

print two_node

輸出:

Tensor("Const:0", shape=(), dtype=int32)

計(jì)算圖:

這里我們得到了一個(gè)節(jié)點(diǎn)(node),它包含常數(shù)2,這個(gè)2是函數(shù)tf.constant帶來(lái)的。當(dāng)我們print變量時(shí),可以看到它返回了一個(gè)tf.Tensor對(duì)象,它是我們剛創(chuàng)建的節(jié)點(diǎn)的指針。為了驗(yàn)證這一點(diǎn),這里是另一個(gè)例子:

代碼:

import tensorflow as tf

two_node = tf.constant(2)

another_two_node = tf.constant(2)

two_node = tf.constant(2)

tf.constant(3)

計(jì)算圖:

即便前后函數(shù)功能一致,即便這些函數(shù)只是簡(jiǎn)單地給同一個(gè)對(duì)象重復(fù)賦值,甚至即便它們根本沒(méi)有被分配給變量,對(duì)于每次調(diào)用函數(shù)tf.constant,計(jì)算圖中都會(huì)創(chuàng)建一個(gè)新節(jié)點(diǎn)。

相反地,如果我們創(chuàng)建了一個(gè)新變量,并把它賦值一個(gè)存在的節(jié)點(diǎn),這就相當(dāng)于把指針復(fù)制到該節(jié)點(diǎn),這時(shí)計(jì)算圖上是不會(huì)出現(xiàn)新節(jié)點(diǎn)的:

代碼:

import tensorflow as tf

two_node = tf.constant(2)

another_pointer_at_two_node = two_node

two_node = None

print two_node

print another_pointer_at_two_node

輸出:

None

Tensor("Const:0", shape=(), dtype=int32)

計(jì)算圖:

接下來(lái),我們嘗試一些有趣的東西:

代碼:

import tensorflow as tf

two_node = tf.constant(2)

three_node = tf.constant(3)

sum_node = two_node + three_node ## 相當(dāng)于 tf.add(two_node, three_node)

計(jì)算圖:

上圖已經(jīng)是一幅真正意義上的計(jì)算圖了。需要注意的是,TensorFlow對(duì)常見(jiàn)數(shù)學(xué)運(yùn)算符進(jìn)行了重載,比如上面的tf.add。雖然它表面上沒(méi)有新增節(jié)點(diǎn),但它確實(shí)把兩個(gè)張量一起添加進(jìn)了一個(gè)新節(jié)點(diǎn)。

所以two_node指向包含2的節(jié)點(diǎn),three_node指向包含3的節(jié)點(diǎn),sum_node指向包含+的節(jié)點(diǎn)——是不是覺(jué)得有些不尋常,為什么sum_node里會(huì)是+,而不是5呢?

事實(shí)上,計(jì)算圖只包含步驟,不包含結(jié)果!至少……現(xiàn)在還不包含!

第二個(gè)關(guān)鍵概念:會(huì)話

如果說(shuō)TensorFlow中存在bug重災(zāi)區(qū),那會(huì)話(session)一定排名首位。由于缺乏明確的命名,再加上函數(shù)的通用性,幾乎每個(gè)Tensorflow程序都要調(diào)用不止一次tf.Session()。

會(huì)話的作用是管理程序運(yùn)行時(shí)的所有資源,如內(nèi)存分配和優(yōu)化,以便我們能按照計(jì)算圖的指示進(jìn)行實(shí)際計(jì)算。你可以把計(jì)算圖想象成計(jì)算“模板”,上面列出了所有詳細(xì)步驟。所以每次在啟動(dòng)計(jì)算圖前,我們都要先進(jìn)行一個(gè)會(huì)話,分配資源,完成任務(wù);在計(jì)算結(jié)束后,我們又得關(guān)閉會(huì)話來(lái)幫助系統(tǒng)回收資源,防止資源泄露。

會(huì)話包含一個(gè)指向全局的指針,這個(gè)指針會(huì)基于計(jì)算圖中所有指向節(jié)點(diǎn)的指針不斷更新。這意味著會(huì)話和節(jié)點(diǎn)的創(chuàng)建不存在時(shí)間先后問(wèn)題。

創(chuàng)建會(huì)話對(duì)象后,我們可以用sess.run(node)返回節(jié)點(diǎn)的值,并且Tensorflow會(huì)執(zhí)行確定該值所需的所有計(jì)算。

代碼:

import tensorflow as tf

two_node = tf.constant(2)

three_node = tf.constant(3)

sum_node = two_node + three_node

sess = tf.Session()

print sess.run(sum_node)

輸出:

5

計(jì)算圖:

我們也可以寫(xiě)成sess.run([node1, node2,...]),讓它返回多個(gè)輸出:

代碼:

import tensorflow as tf

two_node = tf.constant(2)

three_node = tf.constant(3)

sum_node = two_node + three_node

sess = tf.Session()

print sess.run([two_node, sum_node])

輸出:

[2, 5]

計(jì)算圖:

一般來(lái)說(shuō),sess.run()是TensorFlow的最大瓶頸,你用的越少,程序就越好。只要有可能,我們應(yīng)該讓它一次性輸出多個(gè)結(jié)果,而不是頻繁使用,千萬(wàn)不要把它放進(jìn)復(fù)雜循環(huán)。

占位符和feed_dict

到目前為止,我們做的計(jì)算沒(méi)有輸入,所以一直得到相同的輸出。下面我們會(huì)進(jìn)行更有意義的探索,比如構(gòu)建一個(gè)能接受輸入的計(jì)算圖,讓它經(jīng)過(guò)某種方式的處理,最后返回一個(gè)輸出。

要做到這一點(diǎn),最直接的方法是使用占位符(Placeholders),這是一種用于接受外部輸入的節(jié)點(diǎn)。

代碼:

import tensorflow as tf

input_placeholder = tf.placeholder(tf.int32)

sess = tf.Session()

print sess.run(input_placeholder)

輸出:

Traceback (most recent call last):

...

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder'with dtype int32

[[Node: Placeholder = Placeholder[dtype=DT_INT32, shape=, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

計(jì)算圖:

...不是個(gè)好兆頭。這是一個(gè)典型的失敗案例,因?yàn)檎嘉环旧頉](méi)有初始值,再加上我們沒(méi)有對(duì)它賦值,Tensorflow出現(xiàn)了個(gè)bug。

在會(huì)話sess.run()中,占位符可以用feed_dict饋送數(shù)據(jù)。

代碼:

import tensorflow as tf

input_placeholder = tf.placeholder(tf.int32)

sess = tf.Session()

print sess.run(input_placeholder, feed_dict={input_placeholder: 2})

輸出:

2

計(jì)算圖:

注意feed_dict的格式,它是一個(gè)字典,對(duì)于計(jì)算圖中所有存在的占位符,它都要給出相應(yīng)的取值(如前所述,它其實(shí)是指向圖中占位符節(jié)點(diǎn)的指針),這些值一般是標(biāo)量或Numpy數(shù)組。

第三個(gè)關(guān)鍵概念:計(jì)算路徑

讓我們?cè)囋嚵硪粋€(gè)涉及占位符的例子:

代碼:

import tensorflow as tf

input_placeholder = tf.placeholder(tf.int32)

three_node = tf.constant(3)

sum_node = input_placeholder + three_node

sess = tf.Session()

print sess.run(three_node)

print sess.run(sum_node)

輸出:

3

Traceback (most recent call last):

...

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Placeholder_2'with dtype int32

[[Node: Placeholder_2 = Placeholder[dtype=DT_INT32, shape=, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

計(jì)算圖:

我們又在輸出中看到了失敗標(biāo)志...,那么為什么第二個(gè)sess.run這次出現(xiàn)bug了呢?為什么我們沒(méi)有評(píng)估input_placeholder,最后卻引發(fā)了一個(gè)關(guān)于它的錯(cuò)誤?這兩個(gè)問(wèn)題的答案就在于Tensorflow的第三個(gè)關(guān)鍵概念:計(jì)算路徑。好在這塊內(nèi)容總體比較直觀。

當(dāng)我們調(diào)用sess.run()時(shí),我們計(jì)算的不只是當(dāng)前節(jié)點(diǎn),還有一些和它相關(guān)的節(jié)點(diǎn)的值。如果這個(gè)節(jié)點(diǎn)依賴于其他節(jié)點(diǎn),那我們就要一步步上溯計(jì)算,直到達(dá)到計(jì)算圖的“頂端”,也就是不再有其他節(jié)點(diǎn)會(huì)對(duì)目標(biāo)節(jié)點(diǎn)施加影響。

下圖是sum_node節(jié)點(diǎn)的計(jì)算路徑:

為了計(jì)算sum_node,我們要評(píng)估所有三個(gè)節(jié)點(diǎn)的值,其中包括我們沒(méi)有賦值的占位符,這解釋了出現(xiàn)錯(cuò)誤的原因。

相反地,three_node的計(jì)算路徑比較單一:

只要評(píng)估一個(gè)節(jié)點(diǎn)就夠了,所以即便input_placeholder沒(méi)有賦值,它也不會(huì)對(duì)sess.run(three_node)造成影響。

Tensorflow的框架優(yōu)勢(shì)離不開(kāi)計(jì)算路徑設(shè)計(jì)。想象一下,如果我們手里有一幅巨型計(jì)算圖,其中包含大量不必要的節(jié)點(diǎn),通過(guò)這樣的計(jì)算方式,我們可以繞過(guò)大多數(shù)點(diǎn),只計(jì)算必要內(nèi)容,這就為節(jié)省大量運(yùn)行時(shí)間提供了可能性。此外,它還允許我們構(gòu)建大型的“多用途”計(jì)算圖,這些圖中可以有一些共享的核心節(jié)點(diǎn),但我們可以通過(guò)不同計(jì)算路徑來(lái)進(jìn)行不同的計(jì)算。

變量和副作用

截至目前,我們接觸了兩種“沒(méi)有祖先”的節(jié)點(diǎn):tf.constant和tf.placeholder。其中前者每輪都是一個(gè)定值;后者每輪都不一樣。除此之外,我們還需要考慮第三種情況:它可以連續(xù)幾輪都是個(gè)定制,但如果出現(xiàn)了一個(gè)新值,它也可以更新。這就是我們要引入的變量(Variables)概念。

如果想用Tensorflow進(jìn)行深入學(xué)習(xí),了解變量至關(guān)重要,因?yàn)槟P偷?a target="_blank">參數(shù)基本上都是變量。在訓(xùn)練期間,我們會(huì)用梯度下降更新參數(shù);但在評(píng)估過(guò)程中,我們卻要保持參數(shù)不變,并將大量不同的測(cè)試集輸入模型中。所以如果有可能的話,我們會(huì)希望所有可訓(xùn)練的參數(shù)都是變量。

創(chuàng)建變量的方法是tf.get_variable(),其中前兩個(gè)參數(shù)tf.get_variable(name, shape)是固定的,其他的都是可選參數(shù)。name是標(biāo)識(shí)變量對(duì)象的字符串,它必須是獨(dú)一無(wú)二的,要確保沒(méi)有重復(fù)名稱。shape是與張量形狀對(duì)應(yīng)的整數(shù)矩陣,它按順序排列,每個(gè)維度只有一個(gè)整數(shù),例如一個(gè)3×8矩陣的shape應(yīng)該是[3, 8]。如果創(chuàng)建的是標(biāo)量,記得符號(hào)是[]。

代碼:

import tensorflow as tf

count_variable = tf.get_variable("count", [])

sess = tf.Session()

print sess.run(count_variable)

輸出:

Traceback (most recent call last):

...

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value count

[[Node: _retval_count_0_0 = _Retval[T=DT_FLOAT, index=0, _device="/job:localhost/replica:0/task:0/device:CPU:0"](count)]]

計(jì)算圖:

又出問(wèn)題了,這次又是為什么呢?當(dāng)我們首次創(chuàng)建變量時(shí),它的初始值是“Null”,這時(shí)評(píng)估它都是會(huì)出bug的。變量要先賦值,再評(píng)估。這里賦值的方法有兩種,一是設(shè)定一個(gè)初始值,二是tf.assign()。我們來(lái)看tf.assign():

代碼:

import tensorflow as tf

count_variable = tf.get_variable("count", [])

zero_node = tf.constant(0.)

assign_node = tf.assign(count_variable, zero_node)

sess = tf.Session()

sess.run(assign_node)

print sess.run(count_variable)

輸出:

0

計(jì)算圖:

和上文提到的節(jié)點(diǎn)相比,tf.assign(target, value)這個(gè)節(jié)點(diǎn)有點(diǎn)特殊:

它不做計(jì)算,總是等于value;

副作用(Side Effects)。上圖顯示了這個(gè)操作的副作用,當(dāng)計(jì)算流通過(guò)assign_node時(shí),count_variable節(jié)點(diǎn)里的值被強(qiáng)行替換成了zero_node節(jié)點(diǎn)的值;

即便count_variable節(jié)點(diǎn)和assign_node之間存在連接,但兩者互不依賴(虛線)。

因?yàn)椤案弊饔谩惫?jié)點(diǎn)支撐著大部分Tensorflow深度學(xué)習(xí)計(jì)算流,所以真正理解其中的原理是很有必要的,當(dāng)我們運(yùn)行sess.run(assign_node)時(shí),計(jì)算路徑經(jīng)過(guò)assign_node和zero_node:

計(jì)算圖:

之前提到了,我們計(jì)算目標(biāo)節(jié)點(diǎn)時(shí)會(huì)一起計(jì)算和它相關(guān)的節(jié)點(diǎn),這之中包括副作用。如上圖中的綠色部分所示,由于tf.assign帶來(lái)的特定副作用,原先儲(chǔ)存“Null”的count_variable現(xiàn)在已經(jīng)被永久設(shè)置成了0,這意味著下次我們調(diào)用sess.run(count_variable)時(shí),它會(huì)輸出0,而不是反饋bug。

接下來(lái),讓我們看看設(shè)定初始值:

代碼:

import tensorflow as tf

const_init_node = tf.constant_initializer(0.)

count_variable = tf.get_variable("count", [], initializer=const_init_node)

sess = tf.Session()

print sess.run([count_variable])

輸出:

Traceback (most recent call last):

...

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value count

[[Node: _retval_count_0_0 = _Retval[T=DT_FLOAT, index=0, _device="/job:localhost/replica:0/task:0/device:CPU:0"](count)]]

計(jì)算圖:

好的,為什么這里又沒(méi)有初始化呢?

答案在于會(huì)話和計(jì)算圖之間的割裂。我們?yōu)樽兞吭O(shè)置了一個(gè)初始值const_init_node,但它反映在計(jì)算圖上卻只是兩個(gè)節(jié)點(diǎn)間的虛線連接。這是因?yàn)槲覀冊(cè)跁?huì)話中根本沒(méi)有初始化操作,沒(méi)有為它分配計(jì)算資源。我們需要在會(huì)話中把變量更新成const_init_node。

代碼:

import tensorflow as tf

const_init_node = tf.constant_initializer(0.)

count_variable = tf.get_variable("count", [], initializer=const_init_node)

init = tf.global_variables_initializer()

sess = tf.Session()

sess.run(init)

print sess.run(count_variable)

輸出:

0.

計(jì)算圖:

為此,我們添加了另一個(gè)特殊節(jié)點(diǎn):init = tf.global_variables_initializer()。和tf.assign()類似,這也是一個(gè)帶有副作用的節(jié)點(diǎn),但它不需要指定輸入內(nèi)容。tf.global_variables_initializer()從創(chuàng)建之初就縱觀全圖,并自動(dòng)為圖中的每個(gè)tf.initializer添加依賴關(guān)系。當(dāng)我們開(kāi)始執(zhí)行sess.run(init)時(shí),它會(huì)完成全圖初始化,從而避免報(bào)錯(cuò)。

變量共享

在實(shí)際操作中,有時(shí)我們也會(huì)遇到Tensorflow代碼與變量共享,它涉及創(chuàng)建范圍并設(shè)置“reuse = True”,但我們強(qiáng)烈不建議你這么做。如果你想在多個(gè)地方使用單個(gè)變量,只需以編程方式跟蹤指向該變量節(jié)點(diǎn)的指針,并在需要時(shí)重新使用它。換句話說(shuō),對(duì)于你打算存儲(chǔ)在內(nèi)存中的每個(gè)參數(shù),你應(yīng)該只調(diào)用一次tf.get_variable()。

除了以上三點(diǎn),文章還介紹了優(yōu)化和debug過(guò)程中容易遇到的錯(cuò)誤,考慮到代碼過(guò)長(zhǎng)影響閱讀體驗(yàn),如果讀者感興趣,可以關(guān)注【論智】知乎專欄,明天小編會(huì)整理更新。

希望這篇文章能夠幫助你更好地理解Tensorflow是什么、它是如何工作的,以及如何使用它。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4807

    瀏覽量

    85042
  • 強(qiáng)化學(xué)習(xí)

    關(guān)注

    4

    文章

    268

    瀏覽量

    11305
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60633

原文標(biāo)題:進(jìn)了谷歌門才領(lǐng)悟的Tensorflow教程:答疑解惑(一)

文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    5個(gè)常用Python庫(kù)

    Python 標(biāo)準(zhǔn)庫(kù)有超過(guò) 200 個(gè)模塊,程序員可以在他們的程序中導(dǎo)入和使用。雖然普通程序員對(duì)其中許多模塊都有些經(jīng)驗(yàn),但很可能有
    發(fā)表于 11-28 11:27 ?565次閱讀

    phpy:PHP與Python互調(diào)用庫(kù)

    的 PyTorch、transformers、TensorFlow 等 AI 庫(kù),以及 Numpy、Pandas、Scikit 等科學(xué)計(jì)算庫(kù),還可以使用 PyQt、wxPython 等圖形界面
    的頭像 發(fā)表于 12-12 10:43 ?1065次閱讀
    phpy:PHP與<b class='flag-5'>Python</b>互調(diào)用<b class='flag-5'>庫(kù)</b>

    關(guān)于 TensorFlow

    的靈活性TensorFlow 不是個(gè)嚴(yán)格的“神經(jīng)網(wǎng)絡(luò)”庫(kù)。只要你可以將你的計(jì)算表示為
    發(fā)表于 03-30 19:57

    使用 TensorFlow, 你必須明白 TensorFlow

    出的 op 的輸出, 這些返回值可以傳遞給其它 op 構(gòu)造器作為輸入.TensorFlow Python 庫(kù)個(gè)默認(rèn)圖 (default
    發(fā)表于 03-30 20:03

    TensorFlow是什么

    神經(jīng)網(wǎng)絡(luò)的計(jì)算部署到任意數(shù)量的 CPU 或 GPU 的服務(wù)器、PC 或移動(dòng)設(shè)備上,且只利用個(gè) TensorFlow API。你可能會(huì)問(wèn),還有很多其他的深度學(xué)習(xí)庫(kù),如 Torch、Th
    發(fā)表于 07-22 10:14

    TensorFlow安裝和下載(超詳細(xì))

    Anaconda。Anaconda 適用于這三種操作系統(tǒng),安裝簡(jiǎn)單,在同一個(gè)系統(tǒng)上維護(hù)不同的項(xiàng)目環(huán)境也很方便,因此本教程將基于 Anaconda 安裝 TensorFlow。有關(guān) Anaconda 及其環(huán)境管理
    發(fā)表于 07-22 10:25

    一個(gè)TensorFlow程序(hello world)詳解

    起看下這段簡(jiǎn)單的代碼:導(dǎo)入tensorflow,這將導(dǎo)入 TensorFlow 庫(kù),并允許使用其精彩的功能:import tensorflow
    發(fā)表于 07-22 10:26

    TensorFlow常用Python擴(kuò)展包

    )。PythonMagick:這是 ImageMagick 庫(kù)Python 綁定。它是個(gè)顯示、轉(zhuǎn)換和編輯光柵圖像及矢量圖像文件的庫(kù)。它
    發(fā)表于 07-28 14:35

    以Go綁定實(shí)例理解TensorFlow

    本文通過(guò)個(gè)簡(jiǎn)單的Go綁定實(shí)例,讓讀者步地學(xué)習(xí)到Tensorflow有關(guān)ID、作用域、類型等方面的知識(shí)。以下是譯文。
    發(fā)表于 09-28 17:42 ?0次下載
    以Go綁定實(shí)例理解<b class='flag-5'>TensorFlow</b>

    TensorFlow是什么?如何啟動(dòng)并運(yùn)行TensorFlow

    TensorFlow款用于數(shù)值計(jì)算的強(qiáng)大的開(kāi)源軟件庫(kù),特別適用于大規(guī)模機(jī)器學(xué)習(xí)的微調(diào)。 它的基本原理很簡(jiǎn)單:首先在 Python 中定義要執(zhí)行的計(jì)算圖(例如圖 9-1),然后
    的頭像 發(fā)表于 07-29 11:16 ?1.7w次閱讀

    10個(gè)流行的Python庫(kù)平臺(tái)

    作為開(kāi)發(fā)人員喜愛(ài)的語(yǔ)言之Python以其豐富的社區(qū)可用工具和庫(kù)而聞名。我們列出了開(kāi)發(fā)人員可以用于計(jì)算機(jī)視覺(jué)10個(gè)流行的Python
    的頭像 發(fā)表于 10-09 16:33 ?3341次閱讀

    tensorflowpython的關(guān)系_tensorflow與pytorch的區(qū)別

    TensorflowPython有什么關(guān)系?TensorflowPython的機(jī)器學(xué)習(xí)庫(kù)Pytho
    的頭像 發(fā)表于 12-04 14:54 ?2w次閱讀

    介紹5個(gè)常用的Python庫(kù)

    Python 標(biāo)準(zhǔn)庫(kù)有超過(guò) 200 個(gè)模塊,程序員可以在他們的程序中導(dǎo)入和使用。雖然普通程序員對(duì)其中許多模塊都有些經(jīng)驗(yàn),但很可能有
    的頭像 發(fā)表于 03-22 09:27 ?758次閱讀

    python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢數(shù)據(jù)庫(kù) python數(shù)據(jù)庫(kù)連接

    使用第三方庫(kù),包括MySQLDB、sqlite3、psycopg2等庫(kù)。其中MySQLDB是Python連接MySQL數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 08-28 17:09 ?1907次閱讀

    tensorflow簡(jiǎn)單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡(jiǎn)單的模型訓(xùn)練。TensorFlow個(gè)開(kāi)源的機(jī)器學(xué)習(xí)庫(kù),廣泛用于各種機(jī)器學(xué)習(xí)任務(wù)
    的頭像 發(fā)表于 07-05 09:38 ?788次閱讀
    主站蜘蛛池模板: 日本大片免a费观看在线 | 午色影院 | 黄色网视频 | 好色亚洲 | 天天色综合5| 抽搐一进一出gif免费男男 | free欧美| 日本一道高清不卡免费 | 欧美3区| 欧美日韩国产成人精品 | 日本不卡在线播放 | 韩国三级在线不卡播放 | 日本三级三级三级免费看 | 免费日本黄色网址 | 色色色色色色网 | 日本不卡在线观看免费v | 国产看色免费 | 手机在线小视频 | 成年人电影黄色 | www视频在线观看天堂 | 日本一本高清 | 欧美一卡二卡科技有限公司 | 欧美黄色片视频 | 中日韩免费视频 | 色中色在线视频 | 在线观看黄色x视频 | 亚洲高清一区二区三区四区 | 色在线网站 | 午夜影院黄 | 国产伦精品一区二区免费 | 四虎影院在线免费播放 | 午夜影院视频 | 久青草国产在线视频_久青草免 | free性欧美video | 久久婷婷丁香七月色综合 | 国产激情视频一区二区三区 | 粗又长好猛好爽 | 久久精品综合 | 天天都色 | 亚洲色图综合在线 | 一级特黄aa大片免费 |