代码之家  ›  专栏  ›  技术社区  ›  Seungho Lee

GradientDescentOptimizer.minimize()如何工作?

  •  0
  • Seungho Lee  · 技术社区  · 8 年前

    GradientDescentOptimizer.minimize() 确实有效。通过下面的代码更具体地说,调用 minimize(error) m , b 所以当我打电话 sess.run([m, b]) 价值?我想很难找到 minimize() 类似于下面代码末尾的结果:

    #Actaul Data
    x_data = np.linspace(0, 10, 10) + np.random.uniform(-1.5, 1.5, 10)
    y_label = np.linspace(0, 10, 10) + np.random.uniform(-1.5, 1.5, 10)
    
    #Random Variables --> These variables will be be modified by minimize()
    m = tf.Variable(0.44)
    b = tf.Variable(0.87)
    
    error = 0
    
    for x, y in zip(x_data, y_label):
        error += (y - (m*x + b)) ** 2
    
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001)
    train = optimizer.minimize(error)
    
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        training_steps = 100
    
        for i in range(training_steps):
            sess.run(train)
    
        final_slope, final_intercept = sess.run([m, b])
    
        print(final_slope, final_intercept) # 0.7535087, 0.83729243
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Mohan Radhakrishnan    8 年前

    优化器和可训练变量之间的链接,如

    可训练变量

    可以将此参数设置为 从训练中排除任何变量。默认情况下在代码中 是真的。它将拾取任何其他变量并尝试优化它,如果 可训练的 不是 .

    m = tf.Variable(0.44,trainable=False)
    b = tf.Variable(0.87)
    

    这种情况下的输出是

    0.44至2.134535

    显式传递变量列表

    variables = tf.trainable_variables()
    allvariables = [var for var in variables]
    
    optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.001)
    train = optimizer.minimize(error,var_list=variables)
    

    如果不是的话 但其他表达式我们可以优化我们想要的。

    with tf.variable_scope('discriminator'):
        c = tf.Variable(1.0)
    
    variables = tf.trainable_variables()
    allvariables = [var for var in variables if var.name.startswith("discriminator")]
    

    这包括 .

    推荐文章