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