如何高效的学习TensorFlow代码?
如何高效的學(xué)習(xí)TensorFlow代碼?
如題,或者如何掌握TensorFlow,應(yīng)用到任何領(lǐng)域? 添加評(píng)論分享10 個(gè)回答
愛(ài)琳李,老李,明天就輟學(xué)了 8?人贊同 本來(lái)都忘了這個(gè)問(wèn)題了,不過(guò)看到很多人也在關(guān)注,也是開(kāi)森。我補(bǔ)充一個(gè)連接: https://www.udacity.com/course/viewer#!/c-ud730/l-6370362152/m-6379811815 這個(gè)是Udacity 谷歌給的deep learning 課程,代碼就在tensorflow源碼里面。幾個(gè)作業(yè)很有趣。課程畫(huà)風(fēng)很可愛(ài),主要是跟著官方Tensorflow的習(xí)慣來(lái)的,講解理論的時(shí)候會(huì)比較照顧得到,比如CNN部分的padding什么的命名都是嚴(yán)格按照TF方法里的標(biāo)準(zhǔn)。
不過(guò)建議大家不要把這門(mén)課用來(lái)入門(mén)上手,理論部分講解的可能不適合入門(mén)級(jí)。作業(yè)代碼可能也需要花點(diǎn)時(shí)間去理解。
我也放個(gè)blog地址,初學(xué)者歡迎大家交流評(píng)論:https://ireneli.eu/ 8編輯于 昨天 20:10添加評(píng)論感謝 ?作者保留權(quán)利 小乖他爹,技術(shù)管理/文字/閱讀/戶(hù)外/酒 19?人贊同 也在學(xué)習(xí)中。
個(gè)人感覺(jué)先把TensorFlow的白皮書(shū):http://download.tensorflow.org/paper/whitepaper2015.pdf
這個(gè)論文整明白了,大致模型就明白了。然后學(xué)習(xí)demo。最后再深入整個(gè)代碼。
白皮書(shū)有個(gè)快翻譯完的中文版:[譯] TensorFlow 白皮書(shū)
------------------------------------------------------------------------------------------------------------
最近陸續(xù)更新了一些學(xué)習(xí)筆記,與初學(xué)者共享:
SHINING的博客 19編輯于 2016-05-117 條評(píng)論感謝 ?作者保留權(quán)利 tobe,contributor to the world 2?人贊同 回來(lái)補(bǔ)充下,給一個(gè)學(xué)習(xí)線路:
入門(mén)最佳拿好不謝 3編輯于 2016-05-15添加評(píng)論感謝 ?作者保留權(quán)利 morvan,機(jī)器學(xué)習(xí)摸索撞墻多了 9?人贊同 我有在制作專(zhuān)門(mén)針對(duì) Tensorflow 的學(xué)習(xí)視頻,從每一個(gè)重要的元素開(kāi)始講起.一級(jí)級(jí)上升.
你可以看看我這個(gè)播放列表:
莫煩 tensorflow 神經(jīng)網(wǎng)絡(luò) 教程
基本上每一個(gè)練習(xí)你都能在下面的視頻描述里找到代碼鏈接,方便你自己的學(xué)習(xí).
之前在 youtube 上發(fā)了以后收到很多贊同,所以就再傳到優(yōu)酷里了.希望能幫助到大家的學(xué)習(xí).
我在 youtube 的頻道: https://www.youtube.com/channel/UCdyjiB5H8Pu7aDTNVXTTpcg
我的頻道里還有一些關(guān)于機(jī)器學(xué)習(xí)的視頻教程.
謝謝關(guān)注和分享~ 9編輯于 2016-06-257 條評(píng)論感謝 ?作者保留權(quán)利 思悵,Mechanical Design/Robotics/Computer Vi… 2?人贊同 我最近在使用Tensorflow。為此,我換上了ubuntu,用上了python。總的來(lái)說(shuō),在了解了神經(jīng)網(wǎng)絡(luò)等基本內(nèi)容之后,再看官方教程比較容易懂。僅就代碼而言,如果已經(jīng)熟悉python,那么看不懂的地方查看API即可。我個(gè)人覺(jué)得開(kāi)始時(shí)最大的難點(diǎn)在于Tensor維度的設(shè)計(jì),整個(gè)系統(tǒng)的運(yùn)行機(jī)理,以及數(shù)據(jù)的輸入。先搞懂這幾塊,應(yīng)該之后學(xué)起來(lái)快一些。 2發(fā)布于 2016-04-038 條評(píng)論感謝 ?作者保留權(quán)利 喬海軍,互聯(lián)網(wǎng)的小蟲(chóng)子 1?人贊同 可以自己從源碼來(lái)部署一遍。
然后就是從簡(jiǎn)單的例子開(kāi)始學(xué)習(xí)。
我主要再用mxnet,拿這兩者來(lái)比較,從比較中可以學(xué)到不少東西。
補(bǔ)充一下
tf和mxnet架構(gòu)極為相似,或者說(shuō)是英雄所見(jiàn)略同吧 1編輯于 2016-06-102 條評(píng)論感謝 ?作者保留權(quán)利 Aitian Ma 2?人贊同 可以看這里翻譯的教程哦 Google開(kāi)源深度學(xué)習(xí)框架Tensorflow進(jìn)行mnist數(shù)據(jù)訓(xùn)練初學(xué)
本文寫(xiě)給機(jī)器學(xué)習(xí)和tensorflow的初學(xué)者。如果你已經(jīng)知道m(xù)nist,softmax(multinomial logistic)regression,你可以會(huì)想看這個(gè)faster paced tutorial.不過(guò),首先得確認(rèn)你已經(jīng) install TensorFlow .
初學(xué)編程,一般都會(huì)學(xué)習(xí)寫(xiě)一個(gè)“hello world!”的程序,MNIST就相當(dāng)于機(jī)器學(xué)習(xí)領(lǐng)域的“hello world!”
MNIST是一個(gè)機(jī)器圖像數(shù)據(jù)集。它包含像下面的一些手寫(xiě)的數(shù)據(jù)圖像:
它還包括了每個(gè)圖像的數(shù)字標(biāo)簽。例如,上面的圖片的標(biāo)簽是 5、0、 4 和 1。
在本教程中,我們要訓(xùn)練一個(gè)模型來(lái)識(shí)別圖像并預(yù)測(cè)他們是什么數(shù)字。我們的目標(biāo)不是訓(xùn)練一個(gè)真的精準(zhǔn)的模型,達(dá)到極強(qiáng)的性能 — — 雖然我們以后會(huì)給你代碼來(lái)做到 !— — 而是要以之為引字讓大家初步了解如何使用TensorFlow。因此,我們要開(kāi)始與一個(gè)非常簡(jiǎn)單的模型,稱(chēng)為 Softmax 回歸。
在本教程中的實(shí)際代碼是非常短的和所有有趣的事情發(fā)生只需要三行代碼。然而,了解其背后的理念很重要 ︰ TensorFlow 的工作原理和核心機(jī)器學(xué)習(xí)的概念。正因?yàn)槿绱?#xff0c;我們要非常認(rèn)真地學(xué)習(xí)這些代碼。
The MNIST DataMNIST 數(shù)據(jù)Yann LeCun's website網(wǎng)站上。為了方便,我們已經(jīng)包括一些 python 代碼來(lái)自動(dòng)下載并安裝數(shù)據(jù)。你可以要么下載的代碼和將其導(dǎo)入如下,或簡(jiǎn)單地復(fù)制并粘貼它。
from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) 下載數(shù)據(jù)分割成三個(gè)部分,55,000 的數(shù)據(jù)點(diǎn)的訓(xùn)練數(shù)據(jù) (mnist.train)、 10000 個(gè)點(diǎn)的測(cè)試數(shù)據(jù) (mnist.test) 和 5000 點(diǎn)的驗(yàn)證數(shù)據(jù) (mnist.validation)。這種分割是非常重要 ︰ 機(jī)器學(xué)習(xí)中測(cè)試數(shù)據(jù)非常重要,通過(guò)它我們才可以驗(yàn)證學(xué)到的知識(shí)是可以泛化的 !正如前面提到的每個(gè) MNIST 數(shù)據(jù)點(diǎn)有兩個(gè)部分 ︰ 圖像的手寫(xiě)的數(shù)字和相應(yīng)的標(biāo)簽。我們將調(diào)用圖像"xs"和標(biāo)簽"ys"。訓(xùn)練集和測(cè)試集包含 x 和 y 們,例如訓(xùn)練圖像是 mnist.train.images 訓(xùn)練的標(biāo)簽是 mnist.train.labels。
每個(gè)圖像是 28 x 28 像素。我們可以把這解讀為一大系列的數(shù)字 ︰
我們可以把這些數(shù)據(jù)變成一個(gè) 28 × 28 = 784 矢量數(shù)組。我們?nèi)绾纹春蠑?shù)組并不重要,只要所有的圖像都一致。從這個(gè)角度來(lái)看,MNIST 圖像都只是一堆784三維向量空間,有很豐富結(jié)構(gòu) (警告 ︰ 計(jì)算密集型的可視化效果)。
扁平數(shù)據(jù)扔掉圖像的二維結(jié)構(gòu)有關(guān)的信息。不會(huì)很糟糕嗎?嗯,最好的計(jì)算機(jī)視覺(jué)方法會(huì)利用這種結(jié)構(gòu),我們將在以后的教程中提到。我們?cè)谶@里用到的簡(jiǎn)單方法,使用 softmax 回歸,則不會(huì)關(guān)注這些結(jié)構(gòu)。
其結(jié)果是,mnist.train.images 是一個(gè)形狀 [55000,784]的張量(n 維數(shù)組)。第一維是圖像和第二個(gè)維度是每個(gè)圖像的像素。在張量的每個(gè)條目是 0 和 1 之間,為某個(gè)特定的圖像中像素點(diǎn)的像素強(qiáng)度。
MNIST 中的相應(yīng)標(biāo)簽是數(shù)字 0 至 9,描述給定的圖像是哪個(gè)數(shù)字。出于本教程的目的,我們要想我們作為一個(gè)"one-hot"的標(biāo)簽。one-hot矢量是一個(gè)由多個(gè)0和一個(gè)1組成的向量。在這種情況下,第 n 個(gè)數(shù)字將被表示為一個(gè)向量中第 n 個(gè)元素為1。例如,3 將是[0,0,0,1,0,0,0,0,0,0]。這樣,mnist.train.labels 是 [55000,10]陣列的浮點(diǎn)數(shù)。
現(xiàn)在我們就可以真正開(kāi)始建立我們的模型了!
Softmax Regressions我們知道,在 MNIST 中的每個(gè)圖像是一個(gè)數(shù)字,無(wú)論是零或九。我們想要能夠通過(guò)一張圖片,給它是每個(gè)數(shù)字的概率。例如,我們的模型可能看到了九的圖片并給出 80%的概率它是一個(gè)九,但給出它可以是5%是八的可能性 (因?yàn)轫攲友h(huán)) 和極小的概率它可能是所有其他數(shù)字。
這是一個(gè)經(jīng)典的案例,其中 softmax 回歸是一個(gè)自然、 簡(jiǎn)單的模型。如果你想要將概率分配給一個(gè)或者幾個(gè)不同的可能時(shí),softmax 就可以完成這樣的事情。甚至后來(lái),當(dāng)我們訓(xùn)練更復(fù)雜的模型,最后一步也將是softmax一層。
Softmax 回歸有兩個(gè)步驟 ︰ 首先我們要把這些輸入的特征加起來(lái),然后我們將這些特征轉(zhuǎn)換成概率。
為了總結(jié)了給定的圖像的特征,我們把這些像素強(qiáng)度做加權(quán)求和。權(quán)重的大小表明該特征在確定它為正確分類(lèi)時(shí)候的作用大小。
下面的關(guān)系圖顯示了學(xué)到的每個(gè)類(lèi)的權(quán)重一個(gè)模型。紅色代表負(fù)的權(quán)重,而藍(lán)色表示正的權(quán)重。
We also add some extra evidence called a bias. Basically, we want to be able to say that some things are more likely independent of the input. The result is that the evidence for a class i given an input x is:
我們還添加了一些額外的證據(jù),被稱(chēng)為一種偏見(jiàn)。基本上,就指獨(dú)立于輸入的特征。結(jié)果是對(duì)于i這一類(lèi)據(jù),我給出了輸入 x,結(jié)果就是︰
evidencei=∑jWi, jxj+bi
其中Wi是權(quán)重,bi是類(lèi)i的偏見(jiàn),,j是輸入x像素。我們可以通過(guò)softmax函數(shù)把這些變成預(yù)測(cè)的概率如下:
y=softmax(evidence)
這里 softmax 擔(dān)任"激活"或"鏈接"的功能,把我們的線性函數(shù)輸出變成我們想要的結(jié)果 — — 在這種情況下,概率分布為 10 例。你可以認(rèn)為它是把輸入的證據(jù)轉(zhuǎn)換成可能是某一類(lèi)的可能性。它被定義為 ︰
softmax(x)=normalize(exp?(x))
展開(kāi)方程你會(huì)得到如下的公式:
softmax(x)i=exp?(xi)/∑jexp?(xj)
通常以第一種方式看 softmax︰指數(shù)化輸入,然后正則化輸出。指數(shù)化意味著更多的輸入特征會(huì)指數(shù)級(jí)增加其權(quán)重。相反,較少單元特征會(huì)讓假設(shè)中獲得其權(quán)重的一小部分。假設(shè)分類(lèi)不會(huì)有0或者負(fù)的權(quán)重。Softmax然后正則化這些權(quán)重,以便他們相加為一,形成一個(gè)有效的概率分布。(若要了解更多關(guān)于softmax 函數(shù)的內(nèi)容,參見(jiàn) section 它邁克爾 · 尼爾森書(shū),完整的交互式可視化中一節(jié))。
你能想象 softmax 回歸作為類(lèi)似下面的內(nèi)容,雖然現(xiàn)實(shí)中會(huì)有更多的 xs。對(duì)于每個(gè)輸出,我們計(jì)算 xs 的加權(quán)的和,添加一個(gè)bias,然后應(yīng)用 softmax。
如果把它寫(xiě)成方程,就可以得到 :
然后我們可以把這個(gè)過(guò)程“標(biāo)量化”,變成矩陣相乘和向量相加。這會(huì)讓計(jì)算更加快速。(也是一種簡(jiǎn)化思考的方法)
更加簡(jiǎn)化一下,我們可以把它寫(xiě)成:
y=softmax(Wx+b)
進(jìn)行回歸
要在Python中做到快速數(shù)值計(jì)算,我們通常使用像 NumPy 做矩陣乘法,然后使用python之外的另一種語(yǔ)言實(shí)現(xiàn)的高效代碼的庫(kù)。不幸的是和Pyhton操作的切換間仍有很大的開(kāi)銷(xiāo)。這種開(kāi)銷(xiāo)是尤其糟糕,如果你想要在 Gpu 上或以分布式的方式運(yùn)行。這種方法下數(shù)據(jù)傳輸?shù)某杀緯?huì)比較高。
TensorFlow 也是在 python之外做這些繁重的計(jì)算,但它更進(jìn)一步,從而避免這種開(kāi)銷(xiāo)。不是用python以外的語(yǔ)言獨(dú)立運(yùn)行單個(gè)昂貴的操作,TensorFlow讓我們通過(guò)圖描述的方式完全從外部運(yùn)行python的交互操作。(可以在幾個(gè)機(jī)器學(xué)習(xí)庫(kù)中看到像這樣的方法)。
若要使用 TensorFlow,我們需要將其導(dǎo)入。
import tensorflow as tf
這些交互式的操作需要符號(hào)變量。我們先來(lái)創(chuàng)建一個(gè):
x = tf.placeholder(tf.float32, [None, 784])x并不是一個(gè)特定的值,它是一個(gè)placeholder,一個(gè)我們需要輸入數(shù)值當(dāng)我們需要tensorflow進(jìn)行運(yùn)算時(shí)。我們想要輸入任意數(shù)量的mnist圖片,每一個(gè)都展開(kāi)成一個(gè)784維的向量。我們用一個(gè)二維的[None, 784]浮點(diǎn)張量代表。 (這里的None表示維度可以是任意的長(zhǎng)度.)
我們的模型中也需要權(quán)重和bias。我們可以把它們看成是額外的輸入,Tensorflow有更加好的方法來(lái)表示它: Variable. Variable是一個(gè)Tensorflow圖交互操作中一個(gè)可以修改的張量。 它可以在計(jì)算中修改。對(duì)于機(jī)器學(xué)習(xí)的,一般都有一些Variable模型參數(shù)。
W = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10])) 我們通過(guò)給 tf.Variable 來(lái)創(chuàng)建這些變量。下面這種情況,我們將初始化 W 和 b 為全零的張量。因?yàn)槲覀儗⒁獙W(xué)習(xí) W 和 b,所以他們初始值是什么都沒(méi)關(guān)系。注意,W 的形狀 [784,10] ,是因?yàn)槲覀兿胍?784 三維圖像向量乘以它輸出10 維向量以標(biāo)識(shí)的不同類(lèi)。b形狀是 [10],這樣我們可以將其和輸出相加。
現(xiàn)在,我們可以實(shí)現(xiàn)我們的模型。它只需要一行代碼 !
y = tf.nn.softmax(tf.matmul(x, W) + b) 首先,我們通過(guò)tf.matmul (x,W)來(lái)把x和W相乘。這和我們的方程中看到的順序是相反的,在那里面是Wx。然后加上b,最后應(yīng)用 tf.nn.softmax。就是這樣。我們只花了一行代碼來(lái)定義我們的模型。不是因?yàn)?TensorFlow 旨在簡(jiǎn)化 softmax 回歸︰ 它只是想通過(guò)非常靈活的方式來(lái)描述很多各種各樣的數(shù)值計(jì)算,從機(jī)器學(xué)習(xí)模型到物理模擬。定義后,可以在不同的設(shè)備上運(yùn)行我們的模型︰您的計(jì)算機(jī)的CPU、Gpu、甚至手機(jī) !
訓(xùn)練
為了訓(xùn)練我們的模型,我們需要定義怎么樣的模型才是好的。嗯,實(shí)際上,在機(jī)器學(xué)習(xí)中我們通常會(huì)為模型定義怎么樣是壞的稱(chēng)為成本或損失,然后再試,盡量最小化這個(gè)成本或者損失。但兩者是等同的。
一個(gè)很常見(jiàn)的很好的成本函數(shù)是"cross-entropy交叉熵"。出人意料的是,交叉熵雖然產(chǎn)生于對(duì)信息壓縮碼信息理論的思考,但它最終被在很多方面,從賭博到機(jī)器學(xué)習(xí)。它的定義是︰
Hy′(y)=?∑iyi′log?(yi)
這里y是我們預(yù)測(cè)的概率分布,而y′ 是真正的分布(那個(gè)我們要輸入的one-hot標(biāo)題).某種理解下,交叉熵可以衡量我們的預(yù)測(cè)是多少的低效。本文不會(huì)更加詳細(xì)地深入交叉熵,但它很值得去理解-> understanding.
為了使用交叉熵,我們要先增加一個(gè)新的placeholder來(lái)放正確的結(jié)果:
y_ = tf.placeholder(tf.float32, [None, 10])然后設(shè)置交叉熵, ?∑y′log?(y):
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) 首先,tf.log 計(jì)算 y 的每個(gè)元素的對(duì)數(shù)。接下來(lái),我們把y_乘以tf.log(y) 的相應(yīng)元素的每個(gè)元素。然后 tf.reduce_sum y。最后,tf.reduce_mean 在批處理中計(jì)算所有示例平均值。現(xiàn)在,我們知道我們想要我們的模型做什么,它是很容易通過(guò) TensorFlow 去訓(xùn)練它。因?yàn)門(mén)ensorFlow 了解整個(gè)圖的計(jì)算,它可以自動(dòng)使用反向傳播算法有效地確定你的變量是如何影響成本函數(shù)并把它最小化。然后,它可以應(yīng)用您所選擇的優(yōu)化算法來(lái)修改變量和降低成本函數(shù)。
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy) 本例子中,我們通過(guò)TensorFlow使用學(xué)習(xí)率為 0.5的梯度下降算法盡量減少 cross_entropy 。梯度下降是一個(gè)簡(jiǎn)單的程序,其中TensorFlow 會(huì)調(diào)整每個(gè)變量點(diǎn)從而使之向降低成本的方向運(yùn)動(dòng)。但 TensorFlow 還提供了許多其它優(yōu)化算法︰使用它簡(jiǎn)單到只需要一行代碼。
TensorFlow 實(shí)際上做什么在這里,在幕后,是它向你執(zhí)行反向傳播和梯度下降的圖表添加新操作。然后它給你回到單個(gè)操作,當(dāng)運(yùn)行時(shí),會(huì)做一步的梯度下降法訓(xùn)練,微調(diào)一下您的變量,以降低成本。
現(xiàn)在,我們?cè)O(shè)置好了我們的模型。最后一件事在我們啟動(dòng)它之前,我們要添加一個(gè)操作來(lái)初始化我們創(chuàng)建的變量︰
init = tf.initialize_all_variables()現(xiàn)在我們可以啟動(dòng)一個(gè)會(huì)話(huà),然后運(yùn)行初始化變量的操作:
sess = tf.Session() sess.run(init)訓(xùn)練走起來(lái)-- 我們要進(jìn)行1000次這樣的訓(xùn)練!
for i in range(1000):batch_xs, batch_ys = mnist.train.next_batch(100)sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})Each step of the loop, we get a "batch" of one hundred random data points from our training set. We runtrain_step feeding in the batches data to replace the placeholders.
Using small batches of random data is called stochastic training -- in this case, stochastic gradient descent. Ideally, we'd like to use all our data for every step of training because that would give us a better sense of what we should be doing, but that's expensive. So, instead, we use a different subset every time. Doing this is cheap and has much of the same benefit.
在循環(huán)的每一步,我們從我們的訓(xùn)練集得到一百隨機(jī)數(shù)據(jù)點(diǎn)"批處理"。我們運(yùn)行 train_step 批次的數(shù)據(jù)來(lái)替換占位符。
使用隨機(jī)數(shù)據(jù)進(jìn)行小批量稱(chēng)為隨機(jī)訓(xùn)練 — — 在這種情況下,隨機(jī)的梯度下降法。理想情況下,我們想使用我們所有的數(shù)據(jù)訓(xùn)練的每一步,因?yàn)檫@會(huì)給我們感覺(jué)是更好的方法,但這樣代價(jià)太大。相反,每次我們使用一個(gè)不同的子集,這樣做代價(jià)更小而且可以達(dá)到相同的效果。
模型評(píng)價(jià)How well does our model do?
Well, first let's figure out where we predicted the correct label. tf.argmax is an extremely useful function which gives you the index of the highest entry in a tensor along some axis. For example, tf.argmax(y,1) is the label our model thinks is most likely for each input, while tf.argmax(y_,1) is the correct label. We can use tf.equalto check if our prediction matches the truth.
我們的模型表現(xiàn)如何呢?
好吧,先讓我們弄清楚我們預(yù)測(cè)正確的標(biāo)簽在哪里。tf.argmax 是項(xiàng)的極其有益的函數(shù),它給返回在一個(gè)標(biāo)題里最大值的索引。例如,tf.argmax(y,1) 是我們的模型輸出的認(rèn)為是最有可能是的那個(gè)值,而 tf.argmax(y_,1) 是正確的標(biāo)簽的標(biāo)簽。如果我們的預(yù)測(cè)與匹配真正的值,我們可以使用 tf.equal來(lái)檢查。
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))這會(huì)返回我們一個(gè)布爾值的列表.為了確定哪些部分是正確的,我們要把它轉(zhuǎn)換成浮點(diǎn)值,然后再示均值。 比如, [True, False, True, True] 會(huì)轉(zhuǎn)換成 [1,0,1,1] ,從而它的準(zhǔn)確率就是0.75.
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))最后我們?cè)跍y(cè)試數(shù)據(jù)上求準(zhǔn)確率的值:
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))應(yīng)該會(huì)是大約 92%.
這樣的結(jié)果是不是已經(jīng)很好了呢?好吧,并不是真的。事實(shí)上,它糟糕透了。這是因?yàn)槲覀兪褂玫囊粋€(gè)非常簡(jiǎn)單的模型。一些小的變化,我們實(shí)事上可以達(dá)到 97%的準(zhǔn)確率。最好的模型可以到達(dá) 99.7%以上精度 !(有關(guān)詳細(xì)信息,看一看這結(jié)果列表-> list of results)。
然而重要的是我們學(xué)會(huì)了使用這個(gè)模型。不過(guò),如果你對(duì)于這個(gè)結(jié)果還是不太滿(mǎn)意,查閱the next tutorial我們通過(guò)一個(gè)教程和學(xué)習(xí)如何通過(guò)TensorFlow構(gòu)建更復(fù)雜的模型,它會(huì)達(dá)到更高的精度哦!
歡迎訪問(wèn)網(wǎng)站:奇趣兒 – 到天邊外去…
歡迎關(guān)注微信號(hào):奇趣兒beta
歡迎掃描二維碼:
2發(fā)布于 2016-06-02添加評(píng)論感謝 ?作者保留權(quán)利 莫宇塵,maya再也不敢亂立flag了 2?人贊同 oop讀代碼作業(yè)要到ddl了,馬克下等菊苣們|・ω・`) 2發(fā)布于 2016-04-25添加評(píng)論感謝 ?作者保留權(quán)利 知乎用戶(hù),水可載舟,亦可賽艇。 1?人贊同 Tensorflow的確設(shè)計(jì)的不錯(cuò),我的學(xué)習(xí)進(jìn)度是先看demo對(duì)照demo查看文檔。其實(shí)它和theano有需要相似之處,比如圖計(jì)算模型,惰性計(jì)算,不過(guò)個(gè)人覺(jué)得要理解tensorfolw張量的模型特別重要,tensorflow seving構(gòu)建需要谷歌的依賴(lài),有大坑。總結(jié)
以上是生活随笔為你收集整理的如何高效的学习TensorFlow代码?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MongoDB的设计模式策略
- 下一篇: 资源推荐 | TensorFlow电子书