免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
從TensorFlow的mnist數(shù)據(jù)集導(dǎo)出手寫體數(shù)字圖片

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

mnist數(shù)據(jù)集是一個(gè)數(shù)字手寫體圖片庫,但它的存儲格式并非常見的圖片格式,所有的圖片都集中保存在四個(gè)擴(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)境也可以參考本處代碼。

import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_dataimport osfrom PIL import Image# 聲明圖片寬高rows = 28cols = 28# 要提取的圖片數(shù)量images_to_extract = 8000# 當(dāng)前路徑下的保存目錄save_dir = "./mnist_digits_images"# 讀入mnist數(shù)據(jù)mnist = input_data.read_data_sets("C:\\Users\\Administrator\\Desktop\\Tensorflow\\數(shù)據(jù)集\\mnist\\", 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是一個(gè)二維張量,為便于后續(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 個(gè)標(biāo)簽" % (images_count, labels_count))    print("每張圖片包含 %s 個(gè)像素" % (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)換可能要花不少時(shí)間,有必要打印轉(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"" 不存在!自動(dòng)創(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ù)量龐大,保存過程可能要花不少時(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)目錄。

來源:https://www.icode9.com/content-4-438401.html
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
TF之GD:基于tensorflow框架搭建GD算法利用Fashion-MNIST數(shù)據(jù)集實(shí)現(xiàn)多分類預(yù)測(92%)
tensorflow學(xué)習(xí)筆記三:實(shí)例數(shù)據(jù)下載與讀取
實(shí)例介紹TensorFlow的輸入流水線
tensorflow卷積神經(jīng)處理過程中的conv2d和max
如何在PyTorch和TensorFlow中訓(xùn)練圖像分類模型
TensorFlow實(shí)戰(zhàn):SoftMax手寫體MNIST識別(Python完整源碼)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服