詳解Python使用tensorflow入門(mén)指南
TensorFlow是Google公司2015年11月開(kāi)源的第二代深度學(xué)習(xí)框架,是第一代框架DistBelief的改進(jìn)版本.
TensorFlow支持python和c/c++語(yǔ)言, 可以在cpu或gpu上進(jìn)行運(yùn)算, 支持使用virtualenv或docker打包發(fā)布.
定義變量
為了使用tensorflow,首先我們需要導(dǎo)入它
import tensorflow as tf
對(duì)于符號(hào)變量,我們新建一個(gè)
x = tf.placeholder(tf.float32, [None, 784])
這里x并不是一個(gè)特定的值,只是一個(gè)占位符,后面我們需要用tensorflow進(jìn)行計(jì)算式,我們會(huì)把它作為輸入
在模型中,我們需要weights權(quán)重和biases偏置,這里就用Variable來(lái)處理定義,Variable可以在整個(gè)計(jì)算過(guò)程中modified
w = tf.Variable(tf.zeros([784, 10])) b = tf.Variable(tf.zeros([10]))
在新建Variable的同時(shí),我們也初始化了它,然后
y = tf.nn.softmax(tf.matmul(x, w) + b)
這樣我們就成功的實(shí)現(xiàn)了我們的模型
訓(xùn)練
我們用cross-entropy作為我們的cost function
H_{y'}(y) = -\sum_i y'_i \log(y_i)
y就是我們預(yù)測(cè)的概率分布,y'是真實(shí)的概率分布
為了實(shí)現(xiàn)交叉熵,我們需要一個(gè)新的占位符來(lái)作為正確答案的輸入
y_ = tf.placeholder(tf.float32, [None, 10]) cross_entropy = -tf.reducen_sum(y_ * tf.log(y))
通過(guò)梯度下降來(lái)實(shí)現(xiàn)優(yōu)化模型
train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
我們使用這個(gè)模型之前,最后一件我們需要做的事是
init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init)
現(xiàn)在,我能可以訓(xùn)練1000次這個(gè)模型了,☺️
for i in xrange(1000): batch_xs, batch_ys = mnist.train.next_batch(100) sess.run(train_step, feed_dict = {x: batch_xs, y_: batch_ys})
使用隨機(jī)數(shù)據(jù)的小batch就稱為隨機(jī)訓(xùn)練
模型評(píng)分
首先,我們對(duì)比真實(shí)的y_和模型所得y之間正確的個(gè)數(shù)有多少
correct_prediction = tf.equal(tf.argmax(y, 1), tf.agrmax(y_, 1))
這個(gè)會(huì)返回一個(gè)boolean列表,比如[True, False, True, True]
accuracy = tf.reduce_mean(tf.cast(correc_prediction, tf.float32)) print (sess.run(accuracy, feed_dict = {x: mnist.test.images, y_: minst.test.labels}))
最后就通過(guò)以上計(jì)算得到準(zhǔn)確率
開(kāi)始使用
TensorFlow并不是一個(gè)純粹的神經(jīng)網(wǎng)絡(luò)框架, 而是使用數(shù)據(jù)流圖進(jìn)行數(shù)值分析的框架.
TensorFlow使用有向圖(graph)表示一個(gè)計(jì)算任務(wù).圖的節(jié)點(diǎn)稱為ops(operations)表示對(duì)數(shù)據(jù)的處理,圖的邊f(xié)low 描述數(shù)據(jù)的流向.
該框架計(jì)算過(guò)程就是處理tensor組成的流. 這也是TensorFlow名稱的來(lái)源.
TensorFlow使用tensor表示數(shù)據(jù). tensor意為張量即高維數(shù)組,在python中使用numpy.ndarray表示.
TensorFlow使用Session執(zhí)行圖, 使用Variable維護(hù)狀態(tài).tf.constant是只能輸出的ops, 常用作數(shù)據(jù)源.
下面我們構(gòu)建一個(gè)只有兩個(gè)constant做輸入, 然后進(jìn)行矩陣乘的簡(jiǎn)單圖:
from tensorflow import Session, device, constant, matmul '''構(gòu)建一個(gè)只有兩個(gè)constant做輸入, 然后進(jìn)行矩陣乘的簡(jiǎn)單圖:''' #如果不使用with session()語(yǔ)句, 需要手動(dòng)執(zhí)行session.close(). #with device設(shè)備指定了執(zhí)行計(jì)算的設(shè)備: # "/cpu:0": 機(jī)器的 CPU. # "/gpu:0": 機(jī)器的第一個(gè) GPU, 如果有的話. # "/gpu:1": 機(jī)器的第二個(gè) GPU, 以此類(lèi)推. with Session() as session: # 創(chuàng)建執(zhí)行圖的上下文 with device('/cpu:0'): # 指定運(yùn)算設(shè)備 mat1 = constant([[3, 3]]) # 創(chuàng)建源節(jié)點(diǎn) mat2 = constant([[2], [2]]) product = matmul(mat1, mat2) # 指定節(jié)點(diǎn)的前置節(jié)點(diǎn), 創(chuàng)建圖 result = session.run(product) # 執(zhí)行計(jì)算 print(result)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python3.6.3安裝圖文教程 TensorFlow安裝配置方法
- python使用tensorflow保存、加載和使用模型的方法
- python使用TensorFlow進(jìn)行圖像處理的方法
- win10下python3.5.2和tensorflow安裝環(huán)境搭建教程
- python使用tensorflow深度學(xué)習(xí)識(shí)別驗(yàn)證碼
- python tensorflow基于cnn實(shí)現(xiàn)手寫(xiě)數(shù)字識(shí)別
- Python通過(guò)TensorFlow卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)貓狗識(shí)別
- python生成tensorflow輸入輸出的圖像格式的方法
- python tensorflow學(xué)習(xí)之識(shí)別單張圖片的實(shí)現(xiàn)的示例
- Python通過(guò)TensorFLow進(jìn)行線性模型訓(xùn)練原理與實(shí)現(xiàn)方法詳解
相關(guān)文章
Python使用Pandas庫(kù)實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)讀寫(xiě)
本次分享將介紹如何在Python中使用Pandas庫(kù)實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)的讀寫(xiě),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解
這篇文章主要介紹了Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04python+matplotlib繪制3D條形圖實(shí)例代碼
這篇文章主要介紹了python+matplotlib繪制3D條形圖實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01對(duì)YOLOv3模型調(diào)用時(shí)候的python接口詳解
今天小編就為大家分享一篇對(duì)YOLOv3模型調(diào)用時(shí)候的python接口詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08執(zhí)行python腳本并傳入json數(shù)據(jù)格式參數(shù)方式
這篇文章主要介紹了執(zhí)行python腳本并傳入json數(shù)據(jù)格式參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09python各層級(jí)目錄下import方法代碼實(shí)例
這篇文章主要介紹了python各層級(jí)目錄下import方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法
這篇文章主要介紹了Tensorflow中使用tfrecord方式讀取數(shù)據(jù)的方法,適用于數(shù)據(jù)較多時(shí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python 將 QQ 好友頭像生成祝福語(yǔ)的實(shí)現(xiàn)代碼
這篇文章主要介紹了用 Python 將 QQ 好友頭像生成祝福語(yǔ)的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-05-05