Ошибка вероятности тензора в «гауссовском процессе» - PullRequest
0 голосов
/ 06 ноября 2019

Я пытаюсь получить пример минимального гауссовского процесса, работающего с вероятностью тензорного потока. Я могу заставить все работать, пока не попробую определить предельную вероятность журнала. На этом этапе я получаю сообщение об ошибке TypeError: Tensor is unhashable if Tensor equality is enabled. Instead, use tensor.experimental_ref() as the key. Я попытался изменить форму массивов x и y, но это не проблема. У меня также была эта ошибка, когда я пытался следить за регрессионным коллажем Google gaussian. Кто-нибудь может дать мне несколько советов о том, что я делаю неправильно? Ниже приведен минимальный пример.

import numpy as np
import tensorflow as tf
import tensorflow_probability as tfp
# Make some data
x = np.array([1, 2, 4, 0, -1, -2, -3], dtype=np.float64)
y = np.sin(x)
noise = x * 0 + 0.1
# Define a mean function
def meanfn(y):
    return tf.constant([np.mean(y)], dtype=np.float64)
# Define the kernel
periodic_amplitude = tf.exp(tf.Variable(np.float64(0)), name='periodic_amplitude')
periodic_length_scale = tf.exp(tf.Variable(np.float64(1)), name='periodic_length_scale')
periodic_period = tf.exp(tf.Variable(np.float64(0)), name='periodic_period')
local_periodic_kernel = tfp.positive_semidefinite_kernels.ExpSinSquared(amplitude=periodic_amplitude, length_scale=periodic_length_scale, period=periodic_period)
# Define the gp
gp = tfp.distributions.GaussianProcess(
    mean_fn=meanfn,
    kernel=local_periodic_kernel,
    index_points=x.reshape(-1,1),
    observation_noise_variance=noise)
# Negative marginal likelihood
neg_marginal_lik = -gp.log_prob(y)

На моем компьютере версии tensorflow=2.0.0, tensorflow-probability=0.7.0, numpy=1.17.2.

1 Ответ

0 голосов
/ 06 ноября 2019

С TF 2.0.0 вы должны использовать TFP 0.8.0.

...