2017-02-25 3 views
0

Ich bin Anfänger in Tensorflow, ich versuche, Zusammenfassungen zu einem Code des neuronalen Netzwerks von diesem Link hinzufügen https://pythonprogramming.net/rnn-tensorflow-python-machine-learning-tutorial/ Ich habe einen Fehler, aber ich konnte nicht wissen, was los ist? hier ist der CodeTensorflow: TypeError: erwartete Zeichenfolge oder Bytes-ähnliche Objekt

import tensorflow as tf 
    from tensorflow.examples.tutorials.mnist import input_data 
    mnist=input_data.read_data_sets("/tmp/data",one_hot=True) 
    n_nodes_hl1=500 
    n_nodes_hl2=500 
    n_nodes_hl3=500 

    n_classes=10 
    batch_size=100 

    x=tf.placeholder("float",[None,784]) 
    y=tf.placeholder("float") 

def neural_net(data): 
    hidden_1_layer={"weight":tf.Variable(tf.random_normal([784,n_nodes_hl1])),"bias":tf.Variable(tf.random_normal([n_nodes_hl1]))} 
    hidden_2_layer={"weight":tf.Variable(tf.random_normal([n_nodes_hl1,n_nodes_hl2])),"bias":tf.Variable(tf.random_normal([n_nodes_hl2]))} 
    hidden_3_layer={"weight":tf.Variable(tf.random_normal([n_nodes_hl2,n_nodes_hl3])),"bias":tf.Variable(tf.random_normal([n_nodes_hl3]))} 
    output_layer={"weight":tf.Variable(tf.random_normal([n_nodes_hl3,n_classes])),"bias":tf.Variable(tf.random_normal([n_classes]))} 

    l1=tf.add(tf.matmul(data,hidden_1_layer["weight"]),hidden_1_layer["bias"]) 
    l1=tf.nn.relu(l1) 
    l2 = tf.add(tf.matmul(l1,hidden_2_layer["weight"]), hidden_2_layer["bias"]) 
    l2 = tf.nn.relu(l2) 
    l3 = tf.add(tf.matmul(l2,hidden_3_layer["weight"]), hidden_3_layer["bias"]) 
    l3 = tf.nn.relu(l3) 
    output = tf.matmul(l3,output_layer["weight"])+ output_layer["bias"] 

    return output 

def train_net(x): 
    prediction=neural_net(x) 
    cost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction,y),name='cost') 
    optimizer=tf.train.AdamOptimizer().minimize(cost) 

    hm_epoch=3 

    for value in [x,y,prediction,cost]: 
     tf.summary.scalar([value.op.name],value) 

    summaries=tf.summary.merge_all() 

    with tf.Session() as sess: 
     sess.run(tf.global_variables_initializer()) 
     summarywriter=tf.summary.FileWriter("layers",sess.graph) 
     for epoch in range(hm_epoch): 
      epoch_loss=0 
      for i in range(int(mnist.train.num_examples/batch_size)): 
       epoch_x,epoch_y=mnist.train.next_batch(batch_size) 
       summarywriter.add_summary(sess.run(summaries,feed_dict={x:epoch_x,y:epoch_y}),i) 
       epoch_loss+=c 
      print('epoch ',epoch,' completed out of ',hm_epoch," loss ",epoch_loss) 
     correct=tf.equal(tf.argmax(prediction,1),tf.argmax(y,1)) 
     accuracy=tf.reduce_mean(tf.cast(correct,'float')) 
     print('accuracy ',accuracy.eval({x:mnist.test.images,y:mnist.test.labels})) 

train_net(x) 

hier ist der Fehler

File "C:/Users/PC-Sara/AppData/Local/Programs/Python/Python35/tf-layers.py", line 69, in <module> 
    train_net(x) 
File "C:/Users/PC-Sara/AppData/Local/Programs/Python/Python35/tf-layers.py", line 46, in train_net 
    tf.summary.scalar([value.op.name],value) 
File "C:\Users\PC-Sara\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\summary\summary.py", line 114, in scalar 
    name = _clean_tag(name) 
File "C:\Users\PC-Sara\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\summary\summary.py", line 86, in _clean_tag 
    new_name = _INVALID_TAG_CHARACTERS.sub('_', name) 
TypeError: expected string or bytes-like object 

Antwort

0

tf.summary.scalar erwartet einen Namen als erstes Argument, kein Array. Dies sollte stattdessen funktionieren:

Verwandte Themen