2016-04-27 19 views
0

I den Fehler:Tensorflow apply_gradients wirft Fehler

Typeerror: Input 'ref' von 'AssignAdd' Op erfordert l-Werteingang

auf der Linie apply_gradient_op = opt.apply_gradients(grads, global_step=stepNum) der Funktion train unten.

def x1_x2_diff_net_v0(): 
    x = tf.placeholder(tf.float32, [None, 4]) 
    lb = tf.placeholder(tf.float32, [None, 2]) 
    #First fc layer 
    with tf.variable_scope('fc1') as scope: 
    w = tfu.get_weights([4,100], name='fc1_w') 
    b = tfu.get_bias([1,100], name='fc1_b') 
    fc1 = tf.nn.relu(tf.matmul(x, w) + b) 
    #Prediction layer 
    with tf.variable_scope('pred') as scope: 
    w = tfu.get_weights([100,2], name='pred_w') 
    b = tfu.get_bias([1, 2], name='pred_b') 
    pred = tf.nn.relu(tf.matmul(fc1, w) + b) 
    #Define the loss 
    loss = tf.nn.l2_loss(pred - lb, name='loss') 
    return loss 

def train(stepNum, initLr=0.01): 
    g = tf.Graph() 
    with g.as_default(): 
    loss = x1_x2_diff_net_v0() 
    lr = tf.train.exponential_decay(initLr, stepNum, 100, 
       0.1, staircase=True) 
    for tv in tf.trainable_variables(): 
     print (tv.name) 
    # Compute gradients. 
    opt = tf.train.GradientDescentOptimizer(lr) 
    grads = opt.compute_gradients(loss) 
    # Apply gradients. 
    apply_gradient_op = opt.apply_gradients(grads, global_step=stepNum) 

Irgendwelche Hinweise darauf, was schief gehen könnte? Ich nahm Codeschnipsel von der Methode train in cifar10.py Beispieldatei.

Antwort

3

Hoppla! Ich habe eine ganze Zahl in StepNum anstelle von tf.Variable übergeben. Es ist jetzt gelöst. Es wäre großartig, wenn die Fehlermeldungen intuitiver wären.