Мне не удалось воспроизвести этот пример из тензорного потока с установленным тензорным потоком 2.0.
Это оригинальный фрагмент:
# 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(x):
value = tf.reduce_sum(scales * (x - minimum) ** 2)
return value, tf.gradients(value, x)[0]
start = np.arange(ndims, 0, -1, dtype='float64')
optim_results = tfp.optimizer.lbfgs_minimize(
quadratic, initial_position=start, num_correction_pairs=10,
tolerance=1e-8)
with tf.Session() as session:
results = session.run(optim_results)
# Check that the search converged
assert(results.converged)
# Check that the argmin is close to the actual value.
np.testing.assert_allclose(results.position, minimum)
, который не работает со следующей ошибкой:
RuntimeError: tf.gradients не поддерживается при активном выполнениивключен. Вместо этого используйте tf.GradientTape.
Если я изменяю код и вместо этого использую градиентную ленту, как показано ниже:
def quadratic(x):
x = tf.Variable(x, dtype='float64')
with tf.GradientTape() as t:
value = tf.reduce_sum(scales * (x - minimum) ** 2)
grad = t.gradient(value, x)
return value, grad
Я также получаю следующую ошибку:
TypeError: Тензор невозможен, если включено равенство Тензорных. Вместо этого используйте в качестве ключа тензор.экспериментальный_реф ().
В общем, все, что я пробовал, не работало, и я не знаю, как я могу использовать lbfgs в тензорном потоке 2.0.