2017-08-04 1 views
0

Ce code tensorflow ne répond pas, et je ne peux pas comprendre pourquoi. S'il vous plaît aider!tensorflow se termine dans une boucle infinie

import tensorflow as tf 
#reading the file 
with tf.name_scope ('File_reading') as scope: 
    filename_queue = tf.train.string_input_producer(["forestfires.csv.digested"]) 
    reader = tf.TextLineReader() 
    key, value = reader.read(filename_queue) 
    record_defaults = [[1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [1.0], [0.0]] 
    #13 decoded 
    col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13 = tf.decode_csv(
     value, record_defaults=record_defaults) 


    #12 is feture, and the 13th is the training data 
    features = tf.stack([col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12],name='data_input') 

    with tf.Session() as sess: 
     # Start populating the filename queue. 
     coord = tf.train.Coordinator() 
     threads = tf.train.start_queue_runners(coord=coord) 
     for i in range(517): 
      # Retrieve a single instance: 
      example, label = sess.run([features, col13]) 

     coord.request_stop() 
     coord.join(threads) 
with tf.name_scope ('network') as scope: 
    W1=tf.Variable(tf.zeros([12, 8]), name='W1') 
    b1=tf.Variable(tf.zeros([8]), name="b1") 
    h1=tf.add(tf.matmul(tf.expand_dims(features,0), W1),b1, name='hidden_layer') 
    W2=tf.Variable(tf.zeros([8, 1]), name='W2') 
    b2=tf.Variable(tf.zeros([1]), name="b2") 
    output=tf.add(tf.matmul(h1, W2),b2, name='output_layer') 
error=tf.add(output,-col13, name='error') 
#training 
train_step = tf.train.AdamOptimizer(1e-4).minimize(error) 
#graphing the output 
file_writer = tf.summary.FileWriter('some directory', sess.graph) 
with tf.Session() as sess: 
    #init 
    tf.global_variables_initializer().run() 
    print ("\n\n\n\n\n\nTRAINING STARTED\n\n\n\n\n\n") 
    print('test1') 
    sess.run(error) #this statement causes an infinite loop 
    print ('test2') 
file_writer.close() 

le code court et imprime de la test1 ', mais il ne fait rien, ne répond même Ctrl + C. J'ai essayé de chercher le problème, mais soit mes compétences google ne sont pas assez bonnes, ou ce n'est pas sur Internet. système: win10 geforce 960M python

Répondre

0
3.5.2

La façon dont vous avez construit le réseau, ne fait pas intellectuellement sens. Si vous avez besoin de lire 517 étapes de votre TextLineReader utiliser la fonction read_up_to et fournir la valeur de 517 plutôt que d'utiliser des sessions séparées. Dans la façon dont vous avez construit le graphique, il ne semble pas y avoir de lien net entre le lecteur d'entrée et le reste du graphique.

Ma suggestion:

# define graph which includes the input queue 
def model(...): 
... 
    return error, metrics 

with tf.Graph.as_default(): 
    error, metrics = model(...) 

    with tf.Session(): 
    # Start Coordinator 
    # Initialise global vars 
    # Start queue runners 
    # model_error, model_metrics = sess.run([error, metrics]) 
0

a résolu le problème (pour ce bogue), il n'a pas été une boucle infinie, il a juste attendu pour les données d'entrée. Pour une raison quelconque, si je colle la partie supérieure « avec tf.Session() comme sess: » bloc (sans la partie) dans la partie supérieure du bas avec le bloc, il fonctionne bien. (Il peut être possible, qu'il ya d'autres erreurs de codage, parce que je l'ai changé quelques petites choses depuis.)