如何使用newton或LBFGS作为优化器?

2024-05-29 04:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我阅读了newton或lbfgs优化器的示例,如下所示:

optimizer = ScipyOptimizerInterface(loss, options={'maxiter': 100})
with tf.Session() as session:
    optimizer.minimize(session)

但我很困惑,因为它不同于梯度下降优化器:

^{pr2}$

我的问题是,我能像下面的例子那样使用L-BFGS优化器吗? 如果答案不是,我如何在下面的代码中使用L-BFGS优化器?在

cost = compute_cost(ys, Z, W_soft, lambd)

train_soft = tf.train.GradientDescentOptimizer(0.5).minimize(cost)
correct_prediction = tf.equal(tf.argmax(Y_hat, 0), tf.argmax(ys, 0))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

init = tf.global_variables_initializer()

mini_batch_data, mini_batch_labels, mini_batch_nums = batch_split(train_X, train_Y, batch_size)

paras_soft = {}
with tf.Session() as sess:
    sess.run(init)
    for epoch in range(max_iter):
        train_soft_cost, _ = sess.run([cost, train_soft], feed_dict = {xs: train_X, ys: train_Y, keep_prob: 1})

Tags: sessiontfaswithbatchtrainoptimizersoft
1条回答
网友
1楼 · 发布于 2024-05-29 04:42:07

^{}是一个包装器,允许scipy.optimize.minimize在tensorflow Session中操作。在

它接受一个methodkwarg,您可以将docs中列出的任何方法传递给它。在

optimizer = ScipyOptimizerInterface(loss, ..., method='L-BGFS-B')

您应该明白,方法的适用性取决于所使用的约束。有关更多信息,请参阅文档。在

相关问题 更多 >

    热门问题