Tensorflow visualización MNIST escrita a mano la formación digital

[Descripción]

  Cuando aprendemos un lenguaje de programación, a menudo el primer programa es imprimir "Hola mundo", después de la plataforma de aprendizaje de la inteligencia artificial, el applet de "Hello World" es MNIST escrita a mano entrenada digital. MNIST es un conjunto escrito a mano el número de datos, sitio web oficial Yann LeCun - que APOS sitio web . conjunto de datos contiene un total de 60.000 conjuntos de líneas de datos de entrenamiento ( mnist.train) y 10.000 filas de conjuntos de datos de prueba ( mnist.test), cada número es el tamaño de 28 * 28 píxeles. Mediante el uso de Tensorflow plataforma de inteligencia artificial, podemos aprender cómo artificial plataforma de aprendizaje de inteligencia para aprender a través de los datos.

[Preparación de datos]

  Descargar juegos mnist datos y mnist_10k_sprite.png imágenes, respectivamente, en las carpetas y la carpeta MNIST_data proyector / datos.

 

[Código]

Copiar el código

tensorflow TF AS Importación 
de Importación tensorflow.examples.tutorials.mnist capturar_datos 
de tensorflow.contrib.tensorboard.plugins importación de proyector 

# conjunto de datos Carga 
= MNIST input_data.read_data_sets ( "MNIST_data /", one_hot = true) 
# número de carreras 
max_steps = 1001 
número de la foto # 
IMAGE_NUM = 3,000 
archivo # ruta 
DIR = "E: / Github / TensorFlow / tronco / Test /" 

# define sesión 
sess = tf.Session () 

# cargar la imagen de 
la incrustación = tf.Variable (tf.stack (mnist. test.images [: IMAGE_NUM]), entrenable = False, nombre = 'incrustación que') 

# parámetro Resumen 
variable_summaries DEF (var): 
    con tf.name_scope ( 'Síntesis'): 
        Mean tf.reduce_mean = (var) 
        tf.summary. escalar ( 'media',valor medio aritmético) #
        tf.name_scope con ( 'STDDEV'): 
            STDDEV = tf.sqrt (tf.reduce_mean (tf.square (var - Mean))) 
        tf.summary.scalar ( 'STDDEV', STDDEV) # desviación estándar 
        tf.summary.scalar ( 'max', tf.reduce_max (var )) # máximo 
        tf.summary.scalar ( 'min', tf.reduce_min ( var)) # mínimo 
        tf.summary.histogram ( 'histograma', var) # histogramas 

# espacio de nombres 
con tf.name_scope ( 'iNPUT'): 
    # ninguno en el presente documento denota una dimensión puede ser de cualquier longitud 
    x = tf.placeholder (tf.float32, [ninguno , 784], el nombre = 'x-entrada' ) 
    # etiquetas correctas 
    Y = tf.placeholder (tf.float32, [Ninguno, 10], name = 'INPUT-Y') 

de imagen # pantalla 
con tf.name_scope ( 'input_reshape'): 
    image_shaped_input tf.reshape = (X, [-1, 28, 28, 1])
    tf.summary.image ( 'entrada', image_shaped_input, 10) 
con tf.name_scope (' pérdida): 
    #交叉熵代价函数
    pérdida = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (etiquetas = y,logits = predicción))

con tf.name_scope ( 'capa'): 
    #创建一个简单神经网络
    con tf.name_scope ( 'pesos'): 
        W = tf.Variable (tf.zeros ([784,10]), name = 'W') 
        variable_summaries (W) 
    con tf.name_scope ( 'sesgos'): 
        b = tf.Variable (tf.zeros ([10]), name = 'b') 
        variable_summaries (b) 
    con tf.name_scope ( 'wx_plus_b'): 
        wx_plus_b = tf.matmul (x, W) + b 
    con tf.name_scope ( 'softmax'):     
        predicción = tf.nn.softmax (wx_plus_b) 

    tf.summary.scalar ( 'pérdida', pérdida) 
con tf.name_scope ( 'tren' ): 
    #使用梯度下降法
    train_step = tf.train.GradientDescentOptimizer (0.5) .minimize (pérdida) 

#初始化变量
sess.run (tf.global_variables_initializer ()) 

con tf.name_scope ( 'exactitud'): 
    con tf.name_scope ( 'correct_prediction'): 
        # tienda el resultado en una lista de Boole 
        correct_prediction = tf.equal (tf.argmax (y , 1), tf.argmax (predicción, 1)) # argmax posición de retorno, donde el valor máximo entre la cantidad de una hoja de una sola dimensión 
    con tf.name_scope ( 'exactitud'): 
        # exactitud necesaria 
        exactitud = tf.reduce_mean (tf.cast (correct_prediction , tf.float32)) # correct_prediction se convierte en el tipo float32 
        tf.summary.scalar ( 'precisión', Precisión) 

# genera archivo de metadatos 
    TF .gfile.DeleteRecursively (+ el DIR 'proyector / proyector / metadata.tsv') 
con Open (el DIR + 'proyector / proyector / metadata.tsv', 'W') Como f:
si tf.gfile.Exists (DIR + 'proyector / proyector / metadata.tsv'): 
embed.metadata_path = DIR + 'proyector / proyector / metadata.tsv' 
embed. sprite.image_path = DIR + 'proyector / data / mnist_10k_sprite.png' 
embed.sprite.single_image_dim.extend ([28,28])
    etiquetas = sess.run (tf.argmax (mnist.test.labels [:], 1)) 
    para i en el rango de (image_num):    
        f.write (STR (etiquetas [i]) + '\ n')         
        
#合并所有resumen的
fusionó = tf.summary.merge_all ()    


projector_writer = tf.summary.FileWriter ( 'proyector / proyector DIR +, sess.graph) 
protector = tf.train.Saver () 
config = projector.ProjectorConfig () 
embed = config .embeddings.add () 
embed.tensor_name = embedding.name
projector.visualize_embeddings (projector_writer, config) 

para i en el rango de (max_steps): 
    #每个批次100个样本
    batch_xs, batch_ys = mnist.train.next_batch (100) 
    run_options = tf.RunOptions (trace_level = tf.RunOptions.FULL_TRACE) 
    run_metadata = tf.RunMetadata () 
    sess.run (train_step, feed_dict = {x: batch_xs, Y: batch_ys}, opciones = run_options, run_metadata = run_metadata) 
    resumen = sess.run (fusionada, feed_dict = {x: batch_xs, y: batch_ys}, opciones = run_options, run_metadata = run_metadata) 
    projector_writer.add_run_metadata (run_metadata, 'paso% 03d' % i) 
    projector_writer.add_summary (resumen, i) 
    
    si i% 100 == 0: 
        acc = sess.run (precisión, feed_dict = {x: mnist.test.images, Y: mnist.test.labels})
        imprimir ( "Iter" + str (i) + "la prueba de precisión =" + str (acc)) 

saver.save (sess, DIR + 'proyector / proyector / a_model.ckpt', global_step = max_steps) 
projector_writer.close () 
sess.close ()

Copiar el código

 [Ejecutar]

  Ejecutar el código directamente

[] Interfaz de Visual

  1, el comando cmd entrada de línea tensorboard --logdir = progector carpeta de la ruta;

  2. Abra su navegador a http: // localhost: 6006 de ruta para ver las visualizaciones.

 

modo de adquisición de la fuente, el número total de la atención pública RaoRao1994, maravillosa vista a la etapa - todos los artículos, usted puede obtener los recursos de enlace de descarga

Obtener más recursos, por favor preste atención al público el número total de RaoRao1994

Artículos originales puestos en libertad 37 · alabanza ganado 13 · vistas 20000 +

Supongo que te gusta

Origin blog.csdn.net/qq_26078953/article/details/91366919
Recomendado
Clasificación