我阅读了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})
^{} 是一个包装器,允许
scipy.optimize.minimize
在tensorflowSession
中操作。在它接受一个
method
kwarg,您可以将docs中列出的任何方法传递给它。在您应该明白,方法的适用性取决于所使用的约束。有关更多信息,请参阅文档。在
相关问题 更多 >
编程相关推荐