国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

詳解Python使用tensorflow入門(mén)指南

2020-01-04 15:53:42
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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就稱(chēng)為隨機(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)稱(chēng)為ops(operations)表示對(duì)數(shù)據(jù)的處理,圖的邊f(xié)low 描述數(shù)據(jù)的流向.

該框架計(jì)算過(guò)程就是處理tensor組成的流. 這也是TensorFlow名稱(chēng)的來(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í)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临武县| 启东市| 汶上县| 长宁县| 吴江市| 三穗县| 西城区| 砚山县| 无锡市| 凤冈县| 三原县| 黑龙江省| 南平市| 平江县| 安顺市| 繁峙县| 申扎县| 石狮市| 景宁| 惠东县| 张家港市| 墨脱县| 军事| 云和县| 东源县| 舒兰市| 清镇市| 莱阳市| 吉安县| 望奎县| 昌图县| 隆化县| 洞头县| 壶关县| 黄龙县| 启东市| 天长市| 义乌市| 莱阳市| 潞城市| 墨竹工卡县|