2016-04-27 5 views
0

я получаю ошибку:Tensorflow apply_gradients бросает ошибку

TypeError: Ввод 'ссылка' из '' AssignAdd Op требует ввода л-значение

на линии apply_gradient_op = opt.apply_gradients(grads, global_step=stepNum) функции train ниже.

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) 

Любые указания на то, что может быть неправильным? Я взял фрагменты кода из метода te train в файле примера cifar10.py.

ответ

3

Упс! Я передавал целое число в stepNum вместо tf.Variable. Теперь он разрешен. Было бы замечательно, если бы сообщения об ошибках были более интуитивными.

Смежные вопросы