最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

tensorflow基于CNN實(shí)戰(zhàn)mnist手寫識別(小白必看)

 更新時(shí)間:2020年07月20日 08:40:32   作者:梁先森-python數(shù)據(jù)分析師進(jìn)階之路  
這篇文章主要介紹了tensorflow基于CNN實(shí)戰(zhàn)mnist手寫識別(小白必看),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

很榮幸您能看到這篇文章,相信通過標(biāo)題打開這篇文章的都是對tensorflow感興趣的,特別是對卷積神經(jīng)網(wǎng)絡(luò)在mnist手寫識別這個(gè)實(shí)例感興趣。不管你是什么基礎(chǔ),我相信,你在看完這篇文章后,都能夠完全理解這個(gè)實(shí)例。這對于神經(jīng)網(wǎng)絡(luò)入門的小白來說,簡直是再好不過了。


通過這篇文章,你能夠?qū)W習(xí)到

  • tensorflow一些方法的用法
  • mnist數(shù)據(jù)集的使用方法以及下載
  • CNN卷積神經(jīng)網(wǎng)絡(luò)具體python代碼實(shí)現(xiàn)
  • CNN卷積神經(jīng)網(wǎng)絡(luò)原理
  • 模型訓(xùn)練、模型的保存和載入

Tensorflow實(shí)戰(zhàn)mnist手寫數(shù)字識別

關(guān)于這個(gè)mnist手寫數(shù)字識別實(shí)戰(zhàn),我是跟著某課網(wǎng)上的教學(xué)視頻跟著寫的

需要導(dǎo)入的包

import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data #mnist數(shù)據(jù)用到的包

下載mnist數(shù)據(jù)

mnist = input_data.read_data_sets('mnist_data',one_hot=True)

通過這一行代碼,就可以將mnist數(shù)據(jù)集下載到本地文件夾mnist_data目錄下,當(dāng)然,你也可以使用絕對地址下載你想要下載的地方。這里需要注意一點(diǎn)是,如果第一次運(yùn)行程序,由于需要下載資源的緣故,故需要一段時(shí)間,并且下載過程是沒有提示的,之后下載成功時(shí) 才會提示 Success xxxxxx 。另一種方式就是直接去官網(wǎng)下載數(shù)據(jù)集
mnist官網(wǎng) 進(jìn)去點(diǎn)擊就可以直接下載了。

張量的聲明

input_x = tf.compat.v1.placeholder(tf.float32,[None,28*28],name='input_x')#圖片輸入
output_y = tf.compat.v1.placeholder(tf.int32,[None,10],name='output_y')#結(jié)果的輸出
image = tf.reshape(input_x,[-1,28,28,1])#對input_x進(jìn)行改變形狀,

稍微解釋一下
[-1,28,28,1] -1表示不考慮輸入圖片的數(shù)量,28*28是圖片的長和寬的像素值,1是通道數(shù)量,由于原圖片是黑白的 ,所以通道是1,若是彩色圖片,應(yīng)為3.

取測試圖片和標(biāo)簽

test_x = mnist.test.images[:3000]
test_y = mnist.test.labels[:3000]

[:3000]表示從列表下標(biāo)為0到2999 這些數(shù)據(jù)
[1:3] 表示列表下標(biāo)從1到2 這些數(shù)據(jù)

卷積神經(jīng)網(wǎng)絡(luò)第一層卷積層(用最通俗的言語告訴你什么是卷積神經(jīng)網(wǎng)絡(luò))

#第一層卷積
conv1 = tf.layers.conv2d(inputs=image,#輸入
  filters=32,#32個(gè)過濾器
  kernel_size=[5,5],#過濾器在二維的大小是5*5
  strides=1,#步長是1
  padding='same',#same表示輸出的大小不變,因此需要補(bǔ)零
  activation=tf.nn.relu#激活函數(shù)
 )#形狀[28,28,32]

第二層池化層

pool1 = tf.layers.max_pooling2d(
  inputs=conv1,#第一層卷積后的值
  pool_size=[2,2],#過濾器二維大小2*2
  strides=2 #步長2
)#形狀[14,14,32]

第三層卷積層2

conv2 = tf.layers.conv2d(inputs=pool1,
  filters=64,
  kernel_size=[5,5],
  strides=1,
  padding='same',
  activation=tf.nn.relu
)#形狀[14,14,64]

第四層池化層2

pool2 = tf.layers.max_pooling2d(
  inputs=conv2,
  pool_size=[2,2],
  strides=2
)#形狀[7,7,64]

平坦化

flat = tf.reshape(pool2,[-1,7*7*64])

使用flat.shape 輸出的形狀為(?, 3136)

1024個(gè)神經(jīng)元的全連接層

dense = tf.layers.dense(inputs=flat,units=1024,activation=tf.nn.relu)

tf.nn.relu 是一種激活函數(shù),目前絕大多數(shù)神經(jīng)網(wǎng)絡(luò)使用的激活函數(shù)是relu

Droupout 防止過擬合

dropout = tf.layers.dropout(inputs=dense,rate=0.5)

就是為了避免訓(xùn)練數(shù)據(jù)量過大,造成過于模型過于符合數(shù)據(jù),泛化能力大大減弱。

10個(gè)神經(jīng)元的全連接層

logits = tf.layers.dense(inputs=dropout,units=10,name="logit_1")

計(jì)算誤差,使用adam優(yōu)化器優(yōu)化誤差

#計(jì)算誤差,使用交叉熵(交叉熵用來衡量真實(shí)值和預(yù)測值的相似性)
loss = tf.losses.softmax_cross_entropy(onehot_labels=output_y,logits=logits)
#學(xué)習(xí)率0.001 最小化loss值,adam優(yōu)化器
train_op = tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)

計(jì)算精度值

accurary = tf.metrics.accuracy(
   labels=tf.argmax(output_y,axis=1),
   predictions=tf.argmax(logits,axis=1),)[1]

創(chuàng)建會話,初始化變量

sess = tf.compat.v1.Session()#創(chuàng)建一個(gè)會話
#初始化全局變量和局部變量
init = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
sess.run(init)

基本上到這里,這個(gè)程序就完成了,不過你也可以在此基礎(chǔ)上加上一些數(shù)據(jù)的輸出,使其更容易顯示整個(gè)訓(xùn)練的過程。
比如我加上了這一段

for i in range(1000):
 #獲取以batch_size為大小的一個(gè)元組,包含一組圖片和標(biāo)簽
 batch = mnist.train.next_batch(50)
 train_loss,train_op_,logits_output = sess.run([loss,train_op,logits],{input_x:batch[0],output_y:batch[1]})
 if i % 100 == 0:
  test_accuracy = sess.run(accurary,{input_x:test_x,output_y:test_y})
  print(("step=%d,Train loss=%.4f,[Test accuracy=%.2f]") \
    % (i, train_loss, test_accuracy))

輸出為:


完整的代碼數(shù)據(jù)文件我整理到了GitHub 下載地址 大家如果覺得可以的話,可以給個(gè)⭐

下面就回答一些我在學(xué)習(xí)過程中的遇到的問題:

【問】如何開始學(xué)習(xí)tensorflow,小白如何入門?
【答】 我的建議是先找到自己感興趣的點(diǎn),從這個(gè)點(diǎn)出發(fā),通過實(shí)踐將自己不明白的方法原理通過看官網(wǎng),看博客,查百度,一一解決。文章開頭的那個(gè)視頻,我認(rèn)為作為入門還不錯,最好再有一本tensorflow相關(guān)書籍結(jié)合著來。

【問】 CNN卷積神經(jīng)網(wǎng)絡(luò)的流程是什么,其中的轉(zhuǎn)化是什么樣的?
【答】主要涉及的知識就是數(shù)組之間的計(jì)算,具體關(guān)于我對卷積神經(jīng)網(wǎng)絡(luò)的理解,可以參考這篇博客 最易懂-CNN卷積神經(jīng)網(wǎng)絡(luò)運(yùn)行原理和流程

【問】訓(xùn)練好的模型如何保存或者直接拿來使用呢?
【答】具體看我的另一篇博客 模型的保存和使用 也是通過這個(gè)例子,教你如何保存模型和使用模型

【問】為什么中間有出現(xiàn)兩次卷積層,兩次池化層?
【答】這個(gè)不是必須的,有的比較復(fù)雜的模型需要很多層,每一層都是對上一層特征的提取,只是這個(gè)就是比較基本的模型,都是使用兩次。初次咱們學(xué)習(xí)的話,就使用兩次就夠了,后面學(xué)習(xí)的知識多了,就可以自己根據(jù)實(shí)際情況加了。

【問】為什么全連接層有兩個(gè),里面的神經(jīng)元數(shù)是固定的嗎?
【答】有幾個(gè)全連接層不是固定的,你就可以理解,這個(gè)全連接層就是做最后的收尾工作的,就是將前面幾個(gè)層所提取到的信息,最后進(jìn)行匯總 并顯示,所以,最后一個(gè)全連接層的神經(jīng)元必須是10,由于本次使用的ont-hot (獨(dú)熱碼)的形式來表示圖片的label,所以最后一個(gè)輸出的神經(jīng)元個(gè)數(shù)必須是10.至于前面的,大家可以嘗試多使用幾個(gè)嘗試一下。
【問】one_hot獨(dú)熱碼在咱們這個(gè)程序中是怎么使用的?
【答】其實(shí)我也是頭一次聽說這個(gè)編碼(我是小白),舉個(gè)例子吧。
0:1000000000
1:0100000000
2:0010000000
就是這種

到此這篇關(guān)于tensorflow基于CNN實(shí)戰(zhàn)mnist手寫識別(小白必看)的文章就介紹到這了,更多相關(guān)tensorflow mnist手寫識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • matplotlib繪制多個(gè)子圖(subplot)的方法

    matplotlib繪制多個(gè)子圖(subplot)的方法

    這篇文章主要介紹了matplotlib繪制多個(gè)子圖(subplot)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • ElasticSearch Python 使用示例詳解

    ElasticSearch Python 使用示例詳解

    這篇文章主要介紹了ElasticSearch Python 使用示例詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2025-04-04
  • Python實(shí)現(xiàn)查詢某個(gè)目錄下修改時(shí)間最新的文件示例

    Python實(shí)現(xiàn)查詢某個(gè)目錄下修改時(shí)間最新的文件示例

    這篇文章主要介紹了Python實(shí)現(xiàn)查詢某個(gè)目錄下修改時(shí)間最新的文件,涉及Python使用os與shutil模塊針對文件的遍歷、屬性獲取、讀寫等相關(guān)操作技巧,需要的朋友可以參考下
    2018-08-08
  • 使用python畫出邏輯斯蒂映射(logistic map)中的分叉圖案例

    使用python畫出邏輯斯蒂映射(logistic map)中的分叉圖案例

    這篇文章主要介紹了使用python畫出邏輯斯蒂映射(logistic map)中的分叉圖案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • python SQLAlchemy 中的Engine詳解

    python SQLAlchemy 中的Engine詳解

    這篇文章主要介紹了python SQLAlchemy 中的Engine詳解,Engine 翻譯過來就是引擎的意思,汽車通過引擎來驅(qū)動,而 SQLAlchemy 是通過 Engine 來驅(qū)動,Engine 維護(hù)了一個(gè)連接池(Pool)對象和方言(Dialect),需要的朋友可以參考下
    2019-07-07
  • 使用apiDoc實(shí)現(xiàn)python接口文檔編寫

    使用apiDoc實(shí)現(xiàn)python接口文檔編寫

    今天小編就為大家分享一篇使用apiDoc實(shí)現(xiàn)python接口文檔編寫,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python中函數(shù)的創(chuàng)建及調(diào)用

    Python中函數(shù)的創(chuàng)建及調(diào)用

    這篇文章主要介紹了Python中函數(shù)的創(chuàng)建及調(diào)用,創(chuàng)建函數(shù)也稱為定義一個(gè)函數(shù),可以理解為創(chuàng)建一個(gè)具有某種用途的工具。調(diào)用函數(shù)也就是執(zhí)行函數(shù)。如果把創(chuàng)建的函數(shù)理解為創(chuàng)建一個(gè)具體有某種用途的工具,那么調(diào)用函數(shù)就相當(dāng)于使用該工具
    2022-06-06
  • Django實(shí)現(xiàn)在線無水印抖音視頻下載(附源碼及地址)

    Django實(shí)現(xiàn)在線無水印抖音視頻下載(附源碼及地址)

    該項(xiàng)目功能簡單,完全復(fù)制SaveTweetVedio的項(xiàng)目。用戶觀看抖音視頻時(shí)選擇復(fù)制視頻鏈接,輸入到下載輸入欄,即可下載無水印視頻,還可掃描二維碼手機(jī)上預(yù)覽。親測成功。
    2021-05-05
  • Python?Pandas?中的數(shù)據(jù)結(jié)構(gòu)詳解

    Python?Pandas?中的數(shù)據(jù)結(jié)構(gòu)詳解

    這篇文章主要介紹了Python?Pandas?中的數(shù)據(jù)結(jié)構(gòu)詳解,Pandas有三種數(shù)據(jù)結(jié)構(gòu)Series、DataFrame和Panel,文章圍繞主題展開更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-06-06
  • Python OpenCV圖像模糊處理介紹

    Python OpenCV圖像模糊處理介紹

    大家好,本篇文章主要講的是Python OpenCV圖像模糊處理介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01

最新評論

宣武区| 天气| 古丈县| 合山市| 吉安市| 方正县| 将乐县| 民勤县| 中阳县| 九台市| 太和县| 绵阳市| 玛沁县| 九江市| 临洮县| 乌兰察布市| 遂宁市| 云浮市| 长顺县| 张家川| 繁昌县| 松桃| 永川市| 石泉县| 乡城县| 太康县| 三台县| 祁门县| 阿鲁科尔沁旗| 胶南市| 灵武市| 安龙县| 正镶白旗| 工布江达县| 兴山县| 三门峡市| 常宁市| 青岛市| 九寨沟县| 郯城县| 沽源县|