首页 > 解决方案 > tfp.optimizer.lbfgs_minimize() 无法识别 previous_optimizer_results 参数

问题描述

我正在尝试在张量流概率中使用 lbfgs_minimize 函数来解决迁移学习问题。我想记录每次迭代的目标函数值和优化结果,所以我将优化器放入一个循环中,每次运行一次迭代,然后将优化器结果作为下一次迭代的 previous_optimizer_results 参数反馈到优化器函数中,而不是使用initial_position 参数。但是,当我这样做时,我得到:

TypeError:minimize() 得到了一个意外的关键字参数“previous_optimizer_results”

我已经使用 tensorflow 概率文档中的示例代码解决了问题,以确保不是我的代码导致了问题并且我得到了同样的错误。您如何使“previous_optimizer_results”参数起作用?

代码

import tensorflow_probability as tfp
import numpy as np

# Initial run to load an optimizer result into memory

# A high-dimensional quadratic bowl.
ndims = 60
minimum = np.ones([ndims], dtype='float64')
scales = np.arange(ndims, dtype='float64') + 1.0

# The objective function and the gradient.
def quadratic_loss_and_gradient(x):
   return tfp.math.value_and_gradient(
   lambda x: tf.reduce_sum(
   scales * tf.math.squared_difference(x, minimum), axis=-1),
   x)
start = np.arange(ndims, 0, -1, dtype='float64')
   optim_results1 = tfp.optimizer.lbfgs_minimize(
   quadratic_loss_and_gradient,
   initial_position=start,
   num_correction_pairs=10,
   max_iterations=1,
   tolerance=1e-8)

# Secondary run using the output of the last run as an input for the optimizer. This is what throws the error. 

optim_results = tfp.optimizer.lbfgs_minimize(
   quadratic_loss_and_gradient,
   initial_position=None,
   previous_optimizer_results=optim_results1,
   num_correction_pairs=10,
   max_iterations=1,
   tolerance=1e-8)

标签: pythontensorflowmathematical-optimizationtensorflow-probability

解决方案


推荐阅读