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

詳解如何從TensorFlow的mnist數(shù)據(jù)集導(dǎo)出手寫體數(shù)字圖片

 更新時間:2019年08月05日 11:05:41   作者:ShadowN1ght  
這篇文章主要介紹了詳解如何從TensorFlow的mnist數(shù)據(jù)集導(dǎo)出手寫體數(shù)字圖片,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在TensorFlow的官方入門課程中,多次用到mnist數(shù)據(jù)集。

mnist數(shù)據(jù)集是一個數(shù)字手寫體圖片庫,但它的存儲格式并非常見的圖片格式,所有的圖片都集中保存在四個擴(kuò)展名為idx3-ubyte的二進(jìn)制文件。

如果我們想要知道大名鼎鼎的mnist手寫體數(shù)字都長什么樣子,就需要從mnist數(shù)據(jù)集中導(dǎo)出手寫體數(shù)字圖片。了解這些手寫體的總體形狀,也有助于加深我們對TensorFlow入門課程的理解。

下面先給出通過TensorFlow api接口導(dǎo)出mnist手寫體數(shù)字圖片的python代碼,再對代碼進(jìn)行分析。代碼在win7下測試通過,linux環(huán)境也可以參考本處代碼。

(非常良心的注釋和打印有木有)

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
 
import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
 
from PIL import Image
 
# 聲明圖片寬高
rows = 28
cols = 28
 
# 要提取的圖片數(shù)量
images_to_extract = 8000
 
# 當(dāng)前路徑下的保存目錄
save_dir = "./mnist_digits_images"
 
# 讀入mnist數(shù)據(jù)
mnist = input_data.read_data_sets("MNIST_data/", one_hot=False)
 
# 創(chuàng)建會話
sess = tf.Session()
 
# 獲取圖片總數(shù)
shape = sess.run(tf.shape(mnist.train.images))
images_count = shape[0]
pixels_per_image = shape[1]
 
# 獲取標(biāo)簽總數(shù)
shape = sess.run(tf.shape(mnist.train.labels))
labels_count = shape[0]
 
# mnist.train.labels是一個二維張量,為便于后續(xù)生成數(shù)字圖片目錄名,有必要一維化(后來發(fā)現(xiàn)只要把數(shù)據(jù)集的one_hot屬性設(shè)為False,mnist.train.labels本身就是一維)
#labels = sess.run(tf.argmax(mnist.train.labels, 1))
labels = mnist.train.labels
 
# 檢查數(shù)據(jù)集是否符合預(yù)期格式
if (images_count == labels_count) and (shape.size == 1):
  print ("數(shù)據(jù)集總共包含 %s 張圖片,和 %s 個標(biāo)簽" % (images_count, labels_count))
  print ("每張圖片包含 %s 個像素" % (pixels_per_image))
  print ("數(shù)據(jù)類型:%s" % (mnist.train.images.dtype))
 
  # mnist圖像數(shù)據(jù)的數(shù)值范圍是[0,1],需要擴(kuò)展到[0,255],以便于人眼觀看
  if mnist.train.images.dtype == "float32":
    print ("準(zhǔn)備將數(shù)據(jù)類型從[0,1]轉(zhuǎn)為binary[0,255]...")
    for i in range(0,images_to_extract):
      for n in range(pixels_per_image):
        if mnist.train.images[i][n] != 0:
          mnist.train.images[i][n] = 255
      # 由于數(shù)據(jù)集圖片數(shù)量龐大,轉(zhuǎn)換可能要花不少時間,有必要打印轉(zhuǎn)換進(jìn)度
      if ((i+1)%50) == 0:
        print ("圖像浮點(diǎn)數(shù)值擴(kuò)展進(jìn)度:已轉(zhuǎn)換 %s 張,共需轉(zhuǎn)換 %s 張" % (i+1, images_to_extract))
 
  # 創(chuàng)建數(shù)字圖片的保存目錄
  for i in range(10):
    dir = "%s/%s/" % (save_dir,i)
    if not os.path.exists(dir):
      print ("目錄 ""%s"" 不存在!自動創(chuàng)建該目錄..." % dir)
      os.makedirs(dir)
 
  # 通過python圖片處理庫,生成圖片
  indices = [0 for x in range(0, 10)]
  for i in range(0,images_to_extract):
    img = Image.new("L",(cols,rows))
    for m in range(rows):
      for n in range(cols):
        img.putpixel((n,m), int(mnist.train.images[i][n+m*cols]))
    # 根據(jù)圖片所代表的數(shù)字label生成對應(yīng)的保存路徑
    digit = labels[i]
    path = "%s/%s/%s.bmp" % (save_dir, labels[i], indices[digit])
    indices[digit] += 1
    img.save(path)
    # 由于數(shù)據(jù)集圖片數(shù)量龐大,保存過程可能要花不少時間,有必要打印保存進(jìn)度
    if ((i+1)%50) == 0:
      print ("圖片保存進(jìn)度:已保存 %s 張,共需保存 %s 張" % (i+1, images_to_extract))
  
else:
  print ("圖片數(shù)量和標(biāo)簽數(shù)量不一致!")

上述代碼的實(shí)現(xiàn)思路如下:

1.讀入mnist手寫體數(shù)據(jù);

2.把數(shù)據(jù)的值從[0,1]浮點(diǎn)范圍轉(zhuǎn)化為黑白格式(背景為0-黑色,前景為255-白色);

3.根據(jù)mnist.train.labels的內(nèi)容,生成數(shù)字索引,也就是建立每一張圖片和其所代表數(shù)字的關(guān)聯(lián),由此創(chuàng)建對應(yīng)的保存目錄;

4.循環(huán)遍歷mnist.train.images,把每張圖片的像素?cái)?shù)據(jù)賦值給python圖片處理庫PIL的Image類實(shí)例,再調(diào)用Image類的save方法把圖片保存在第3步驟中創(chuàng)建的對應(yīng)目錄。

在運(yùn)行上述代碼之前,你需要確保本地已經(jīng)安裝python的圖片處理庫PIL,pip安裝命令如下:

pip3 install Pillow

或 pip install Pillow,取決于你的pip版本。

上述python代碼運(yùn)行后,在當(dāng)前目錄下會生成mnist_digits_images目錄,在該目錄下,可以看到如下內(nèi)容:

可以看到,我們成功地生成了黑底白字的數(shù)字圖片。

如果仔細(xì)觀察這些圖片,會看到一些肉眼也難以分辨的數(shù)字,譬如:


上面這幾個數(shù)字是2。想不到吧?

下面這兩個是5(看起來更像6):


這個是7:(7長這樣?有句MMP不知當(dāng)講不當(dāng)講)


猜猜下面這個是什么:

這是大寫的L?不是。

有點(diǎn)像1,是1嗎?也不是。

倒立拉粑的7?sorry,又猜錯了。

實(shí)話告訴您,它是2!一開始我也是不相信的,知道真相的那一刻我下巴差點(diǎn)掉下來!

這些手寫圖片,一般人用肉眼觀察,識別率能達(dá)到98%就不錯了,但是通過TensorFlow搭建的卷積神經(jīng)網(wǎng)絡(luò)識別率可以達(dá)到99%,非常地神奇!

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python 實(shí)現(xiàn)提取PPT中所有的文字

    python 實(shí)現(xiàn)提取PPT中所有的文字

    這篇文章主要介紹了python 實(shí)現(xiàn)提取PPT中所有的文字,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python3.6.3+opencv3.3.0實(shí)現(xiàn)動態(tài)人臉捕獲

    python3.6.3+opencv3.3.0實(shí)現(xiàn)動態(tài)人臉捕獲

    這篇文章主要為大家詳細(xì)介紹了python3.6.3+opencv3.3.0實(shí)現(xiàn)動態(tài)人臉捕獲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python中super()的理解以及應(yīng)用場景實(shí)例

    Python中super()的理解以及應(yīng)用場景實(shí)例

    在python中關(guān)于類的定義可以分為兩種:老式類&新式類,在新式類中有這么一種方法super( ),下面這篇文章主要給大家介紹了關(guān)于Python中super()的理解以及應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 手把手教你快速安裝gpu版本的pytorch(詳細(xì)圖文教程)

    手把手教你快速安裝gpu版本的pytorch(詳細(xì)圖文教程)

    在Windows?10上安裝PyTorch時,通常默認(rèn)安裝的是CPU版本,且下載速度較慢,本文提供了一個詳細(xì)的安裝指南,包括如何檢查CUDA版本、選擇合適的PyTorch、torchvision和torchaudio版本,并通過pip而非conda進(jìn)行安裝,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 關(guān)于pytorch訓(xùn)練分類器

    關(guān)于pytorch訓(xùn)練分類器

    這篇文章主要介紹了關(guān)于pytorch訓(xùn)練分類器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python實(shí)現(xiàn)超快窗口截圖功能詳解

    Python實(shí)現(xiàn)超快窗口截圖功能詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語言實(shí)現(xiàn)超快窗口截圖功能,可以自動獲取當(dāng)前活動窗口并展示截圖,感興趣的可以了解一下
    2022-05-05
  • Python守護(hù)進(jìn)程實(shí)現(xiàn)過程詳解

    Python守護(hù)進(jìn)程實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了Python守護(hù)進(jìn)程實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • 使用Folium在Python中進(jìn)行地圖可視化的操作指南

    使用Folium在Python中進(jìn)行地圖可視化的操作指南

    在數(shù)據(jù)分析和可視化領(lǐng)域,地圖可視化是一項(xiàng)非常重要的技能,它能夠幫助我們更直觀地理解和展示地理空間數(shù)據(jù),Folium是一個基于Python的地圖可視化庫,本文將詳細(xì)介紹如何使用Folium在Python中進(jìn)行地圖可視化,需要的朋友可以參考下
    2025-03-03
  • Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法

    Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法

    這篇文章主要介紹了Python字符和字符值(ASCII或Unicode碼值)轉(zhuǎn)換方法,即把字符串在ASCII值或者Unicode值之間相與轉(zhuǎn)換的方法,需要的朋友可以參考下
    2015-05-05
  • Python-OpenCV中的cv2.inpaint()函數(shù)的使用

    Python-OpenCV中的cv2.inpaint()函數(shù)的使用

    大多數(shù)人會在家里放一些舊的退化照片,上面有一些黑點(diǎn),一些筆畫等。你有沒有想過恢復(fù)它?本文就來介紹一下方法,感興趣的可以了解一下
    2021-06-06

最新評論

秭归县| 通州区| 清远市| 庆元县| 辛集市| 桃源县| 淮滨县| 田阳县| 资溪县| 合作市| 洛宁县| 和林格尔县| 石泉县| 墨竹工卡县| 会宁县| 鲜城| 杂多县| 新竹市| 景东| 汉川市| 台南县| 北京市| 海口市| 漳州市| 炉霍县| 怀安县| 宁国市| 德保县| 石景山区| 霍山县| 鄂伦春自治旗| 龙里县| 河曲县| 大兴区| 馆陶县| 横峰县| 祁门县| 常熟市| 东辽县| 专栏| 文昌市|