Hacer su propio juego mnist cuando se utiliza tensorflow modelo de formación (con código)

Hacer su propio juego mnist cuando se utiliza tensorflow modelo de formación (con código)

proceso de exploración

(Sal: El primer escrito, mal escrito perdóname)
recogida MNIST es un conjunto de imágenes de entrenamiento es dígitos escritos a mano con podrida, pero en la práctica a menudo utilizan su propio conjunto de datos, se necesita poseer la imagen se convierte en conjuntos de datos de forma mnist de datos, o por otros métodos (utilizados antes Keras, una biblioteca de terceros, aunque la biblioteca es útil, simplificada un montón de pasos puede ser debido a mi limitada capacidad de precisión modelo siempre capacitado y la pérdida no es lo ideal, si usted tiene socios pequeños también quieren saber cómo enseñarme abajo, acabo de empezar muy buena comida (^ ^ △)).

Los datos de la red neural alimentados dos métodos principales: Presentación local, carga directamente.

Probablemente que el siguiente conjunto mnist de la siguiente manera por cuatro paquetes comprimidos:
Aquí Insertar imagen Descripción
Después de extraer este archivo es un archivo IDX3-UBYTE, que se almacena en unas unidades binarias, así como un no profesional, no estamos abiertos.
Aquí Insertar imagen Descripción
Entonces, ¿cómo lo entendemos dentro de la forma de almacenamiento de la misma? De la siguiente manera:

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)

Por lo tanto, se puede obtener el que el tren-images.idx3-UBYTE de algunos datos:

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

Lo puede encontrar la lista de 3000, cada una de las cuales es una imagen vectorial 784 = 28 * 28.
Buscamos el mismo 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 significado que anteriormente, 10 es su etiqueta de clase qué categoría que índice es 1, y 0 en caso contrario.
Aquí comenzamos a aprender a hacer su propio conjunto mnist, y se guardan como datos CSV o puede ser.

Código (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
    '''

resultados:

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

idea

Este es el primer blog que escribí, el nivel de tanto el contenido como el código no puede ser muy alta, nos disculpamos.
Si tienes alguna idea, nos dio la bienvenida a los intercambios sección de comentarios.

He construido un pequeño grupo, damos la bienvenida al cambio.
Aquí Insertar imagen Descripción

Publicado seis artículos originales · ganado elogios 0 · Vistas 73

Supongo que te gusta

Origin blog.csdn.net/qq_44851357/article/details/104054064
Recomendado
Clasificación