Faites votre propre jeu de mnist lors de l'utilisation tensorflow modèle de formation (avec le code)

Faites votre propre jeu de mnist lors de l'utilisation tensorflow modèle de formation (avec le code)

processus d'exploration

(Ps: La première communication écrite, mal écrit pardonnez - moi)
collection MNIST est un ensemble d'images de formation est des chiffres écrits à la main avec pourrie, mais dans la pratique , nous utilisons souvent leur propre ensemble de données, vous devez posséder l'image est convertie en ensembles de données sous forme mnist de données, ou par d' autres méthodes (utilisées avant keras, une bibliothèque tiers, bien que la bibliothèque est utile, beaucoup simplifié d'étapes peut être à cause de ma capacité limitée à la précision des modèles toujours formés et la perte n'est pas idéal, si vous avez des partenaires veulent aussi savoir comment me apprendre bas, je viens de commencer vraiment la bonne nourriture (^ ^ △)).

Les données du réseau de neurones introduits deux méthodes principales: l'introduction directe locale, de la charge.

Probablement que l'ensemble suivant mnist comme suit par quatre paquets comprimés:
Insérer ici l'image Description
Après avoir extrait ce fichier est un fichier IDX3-UBYTE, qui est stocké dans une unité binaire, de manière non professionnelle, nous ne sommes pas ouverts.
Insérer ici l'image Description
Alors , comment pouvons-nous le comprenons dans la forme de stockage de celui - ci? Comme suit:

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('mnist_data',one_hot=True)

test_x = mnist.test.images[:3000]
test_y = mnist.test.labels[:3000]
print(len(test_x)," ",len(test_x[0]))
print(test_x)

Ainsi , il peut être obtenu que le train-images.idx3-ubyte de certaines données:

3000   784
[[0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]]

Vous pouvez le trouver par la liste 3000, dont chacun est un vecteur image 784 = 28 * 28.
Nous attendons la même test_y :

3000   10
[[0. 0. 0. ... 1. 0. 0.]
 [0. 0. 1. ... 0. 0. 0.]
 [0. 1. 0. ... 0. 0. 0.]
 ...
 [0. 1. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [1. 0. 0. ... 0. 0. 0.]]

3000 signification que précédemment, est 10 l'étiquette de classe qui catégorie dont l' indice est égal à 1, et 0 sinon.
Ici , nous commençons à apprendre à faire votre propre jeu de mnist et enregistrés en tant que csv ou les données peuvent être.

Code (python)

# coding:utf-8
import cv2
import os
import random
import pandas as pd

def progress_bar(i):
    a = int(i)*10
    b = '='*int(i)
    c = '->'
    d = '·'*(10-int(i))
    if(i==0):
        print("******执行开始******")
    print(a,'\t',"%","[",b+c+d,"]")
    if (i == 10):
        print("******执行结束******")

def mnist_change(path,img_width,img_height):
    images = []
    labels = []
    tags = os.listdir(path)

    n = 0
    for tag in tags:
        _tag_ = os.listdir(path+tag)
        n += len(_tag_)
    key = 0
    for tag in tags:
        _tag_ = os.listdir(path+tag)
        i = 0
        for image in _tag_:
            img_path = path+tag+'/'+image
            img = cv2.imread(img_path)
            img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
            img = cv2.resize(img, (img_width,img_height),interpolation=cv2.INTER_CUBIC)
            img_data = []
            # images中的一个元素
            for data in img:
                img_data.extend(data)
            # labels中的一个元素
            zero_ = [0 for _ in range(len(tags))]
            zero_[i] = 1

            if(key == 0):
                images.append(img_data)
                labels.append(zero_)
            else:
                rand_i = random.randint(0,len(labels)-1)
                temp1,temp2 = images[rand_i],labels[rand_i]
                images[rand_i],labels[rand_i] = img_data,zero_
                images.append(temp1)
                labels.append(temp2)
            if(key%(n//10)==0 and key/(n//10)<=10):
                progress_bar(key/(n//10))
            key += 1
        i += 1
    return images,labels

def text_save(file, data):
    data = pd.DataFrame(data)
    data.to_csv(file,index=None)
    print("保存文件成功")

if __name__ == '__main__':
    # 自定义参数
    path = 'data/'
    width,height = 200,200
    images,labels = mnist_change(path,width,height)
    text_save('images.csv',images)
    text_save('labels.csv',labels)
    '''
    图片存放格式
    data
    	n0
    		4546asd.jpg
    		asdw4145.jpg
    	n1
    		asd4.jpg
    '''

résultats:

******执行开始******
0 	 % [ ->·········· ]
10 	 % [ =->········· ]
20 	 % [ ==->········ ]
30 	 % [ ===->······· ]
40 	 % [ ====->······ ]
50 	 % [ =====->····· ]
60 	 % [ ======->···· ]
70 	 % [ =======->··· ]
80 	 % [ ========->·· ]
90 	 % [ =========->· ]
100  % [ ==========-> ]
******执行结束******
保存文件成功
保存文件成功

idée

Ceci est le premier blog que j'ai écrit, le niveau de la teneur et le code ne peut pas être très élevé, nous nous excusons.
Si vous avez des idées, nous avons accueilli la section des commentaires échanges.

J'ai construit un petit groupe, nous nous félicitons de l'échange.
Insérer ici l'image Description

Publié six articles originaux · louanges gagnées 0 · Vues 73

Je suppose que tu aimes

Origine blog.csdn.net/qq_44851357/article/details/104054064
conseillé
Classement