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:
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.
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.