为什么tensorflow 概率这么慢?

mnemlml8  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(147)

我尝试使用TensorFlow来测试卡尔曼滤波器,按照官方说明(https://www.tensorflow.org/probability/api_docs/python/tfp/distributions/LinearGaussianStateSpaceModel)定义模型,生成样本,最后计算样本的对数似然值。
我正在运行指令提供的代码

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
import tensorflow_probability as tfp
tfd = tfp.distributions
import matplotlib.pyplot as plt

tfd = tfp.distributions
ndims = 2
step_std = 1.0
noise_std = 5.0
model = tfd.LinearGaussianStateSpaceModel(
  num_timesteps=1000,
  transition_matrix=tf.linalg.LinearOperatorIdentity(ndims),
  transition_noise=tfd.MultivariateNormalDiag(
   scale_diag=step_std**2 * tf.ones([ndims])),
  observation_matrix=tf.linalg.LinearOperatorIdentity(ndims),
  observation_noise=tfd.MultivariateNormalDiag(
   scale_diag=noise_std**2 * tf.ones([ndims])),
  initial_state_prior=tfd.MultivariateNormalDiag(
   scale_diag=tf.ones([ndims])))

x = model.sample(1) # Sample from the prior on sequences of observations.
lp = model.log_prob(x) # Marginal likelihood of a (batch of) observations.
print(lp)

它需要30秒来计算对数似然。PS:我在colab上运行了代码,使用了GPU。
我的问题:为什么它这么慢,我怎样才能提高性能?
谢谢。

7cjasjjr

7cjasjjr1#

Eager模式(TF中的默认模式)一般来说非常慢,你可以用tf.function.将其图形化。
第一个月
也可以将jit_compile设置为True,将lower设置为xla,这将增加一些编译时间(可能不是微不足道的),但通常会使代码更快,如果运行多次,则会减少编译时间。

相关问题