2017-02-17 3 views
15

Ich folge dem tensorflow tutorial. Es gab kürzlich eine Aktualisierung des Tensorflusses, bei der die Kostenfunktion softmax_cross_entropy_with_logits() modifiziert wurde. Daraus ergibt sich die Code in das Tutorial geben den folgenden Fehler:ValueError bei der Ausführung von softmax_cross_entropy_with_logits

ValueError: Only call softmax_cross_entropy_with_logits with named arguments (labels=..., logits=..., ...)

Was bedeutet es und wie es zu beheben?

Hier ist der gesamte Code bis zu diesem Punkt:

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_network_model(data): 
hidden_1_layer = {'weights':tf.Variable(tf.random_normal([784, n_nodes_hl1])), 
        'biases':tf.Variable(tf.random_normal([n_nodes_hl1]))} 

hidden_2_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl1, n_nodes_hl2])), 
        'biases':tf.Variable(tf.random_normal([n_nodes_hl2]))} 

hidden_3_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl2, n_nodes_hl3])), 
        'biases':tf.Variable(tf.random_normal([n_nodes_hl3]))} 

output_layer = {'weights':tf.Variable(tf.random_normal([n_nodes_hl3, n_classes])), 
       'biases':tf.Variable(tf.random_normal([n_classes])),} 


l1 = tf.add(tf.matmul(data,hidden_1_layer['weights']), hidden_1_layer['biases']) 
l1 = tf.nn.relu(l1) 

l2 = tf.add(tf.matmul(l1,hidden_2_layer['weights']), hidden_2_layer['biases']) 
l2 = tf.nn.relu(l2) 

l3 = tf.add(tf.matmul(l2,hidden_3_layer['weights']), hidden_3_layer['biases']) 
l3 = tf.nn.relu(l3) 

output = tf.matmul(l3,output_layer['weights']) + output_layer['biases'] 

return output 

def train_neural_network(x): 
prediction = neural_network_model(x) 
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction,y)) 
optimizer = tf.train.AdamOptimizer().minimize(cost) 

Antwort

25

ändern

tf.nn.softmax_cross_entropy_with_logits(prediction,y) 

zu

tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y) 
+0

Validated. Ich fand Aktualisierung von Tensorflow von 0,11 bis 1,00 verursacht viele Fehler. Diese Fehler können behoben werden, indem die alte Version von Tensorflow ein für allemal unterstützt wird. Ich möchte v1.0 verwenden, also müssen Sie jedes manuell debuggen, wie dieser Thread hervorhebt. –

Verwandte Themen