Tensorflow apply_gradients 抛出错误

Tensorflow apply_gradients throws error

我收到错误:

TypeError:'AssignAdd' 操作的输入 'ref' 需要左值输入

在下方函数 train 的行 apply_gradient_op = opt.apply_gradients(grads, global_step=stepNum) 上。

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)

关于可能出错的任何指示?我从 cifar10.py 示例文件中的方法 train 中获取了代码片段。

糟糕!我将整数传递给 stepNum 而不是 tf.Variable。现在解决了。如果错误消息更直观,那就太好了。