MultiTaskGaussianProcessRegressionModel issue with tf.function

Offen
#1,981 6 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python, tensorflow

Rechercherichtung

Beginnen Sie damit, das Beispiel mit tf.function und der input_signature-Form [None, 1] zu reproduzieren. Untersuchen Sie tensorflow_probability/python/experimental/distributions/multitask_gaussian_process_regression_model.py, insbesondere _compute_flattened_covariance und die Behandlung der gemeldeten Dimensionen, und überprüfen Sie anschließend, dass das Beispiel bei unbekannten Dimensionen keinen UnboundLocalError mehr auslöst.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Hi, I have encountered an error when using tf.function decorator on a function calling MultiTaskGaussianProcessRegressionModel from the experimental package. The error occurs specifically when passing input_signature of unknown dimension to tf.function. Below are the details. Thanks!

Code
import tensorflow as tf
import tensorflow_probability as tfp

tfde = tfp.experimental.distributions
tfk = tfp.math.psd_kernels
tfke = tfp.experimental.psd_kernels

base_kernel = tfk.ExponentiatedQuadratic(
    amplitude=tf.convert_to_tensor(0.6, tf.float64),
    length_scale=tf.convert_to_tensor(0.5, tf.float64),
)
kernel = tfke.Independent(num_tasks=2, base_kernel=base_kernel)
observations = tf.constant([[0., 1.],[-0.5, -1.0]], tf.float64)
observation_index_points = tf.constant([[0],[1.0]], tf.float64)

@tf.function(input_signature=[tf.TensorSpec(shape=[None, 1], dtype=tf.float64)])
def predict(index_points):
    gp = tfde.MultiTaskGaussianProcessRegressionModel(
        kernel=kernel,
        observations=observations,
        observation_index_points=observation_index_points,
        index_points=index_points,
    )
    return gp.mean()

predict(tf.constant([[0.2],[0.4],[0.6]], tf.float64))

The code above works:

  • if we remove tf.function, or
  • if we remove input_signature inside with tf.function

We get the following error if we set shape=[None, 1] inside tf.TensorSpec:

UnboundLocalError: in user code:

    File "/tmp/ipykernel_299029/1064227357.py", line 24, in predict  *
        return gp.mean()
    File "/usr/.local/lib/python3.12/site-packages/tensorflow_probability/python/distributions/distribution.py", line 1536, in mean  **
        return self._mean(**kwargs)
    File "/usr/.local/lib/python3.12/site-packages/tensorflow_probability/python/experimental/distributions/multitask_gaussian_process_regression_model.py", line 852, in _mean
        self._get_flattened_marginal_distribution(
    File "/usr/.local/lib/python3.12/site-packages/tensorflow_probability/python/experimental/distributions/multitask_gaussian_process_regression_model.py", line 831, in _get_flattened_marginal_distribution
        covariance = self._compute_flattened_covariance(index_points)
    File "/usr/.local/lib/python3.12/site-packages/tensorflow_probability/python/experimental/distributions/multitask_gaussian_process_regression_model.py", line 811, in _compute_flattened_covariance
        cholinv_kzx = observation_scale.solve(kxz, adjoint_arg=True)

    UnboundLocalError: cannot access local variable 'dim' where it is not associated with a value
Vorherrschende Sprache
Jupyter Notebook
Sterne
4.4k
Forks
1.1k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus tensorflow/probability

Alle Issues in tensorflow/probability

Ähnliche Issues

Weitere Issues zu Machine Learning

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.