gpt4 book ai didi

python - 获取属性错误 : 'Tensor' object has no attribute 'log_prob' while saving a tensorflow model

转载 作者:行者123 更新时间:2023-12-03 20:51:58 26 4
gpt4 key购买 nike

我正在尝试保存使用 TensorFlow 和 Tensorflow 概率构建的变分自动编码器。
我的目标是使用 TensorFlow 服务为模型提供服务。我愿意以其他方式为模特服务。

这是我的模型:

def dense_layers(sizes):
return tfk.Sequential([tfkl.Dense(size, activation=tf.nn.leaky_relu) for size in sizes])

original_dim = 30
input_shape = (30,)
intermediary_dims = [20, 10, 8]
latent_dim = 2


prior = tfd.MultivariateNormalDiag(
loc=tf.zeros([latent_dim]),
scale_identity_multiplier=1.0)

encoder = tfk.Sequential([
tfkl.InputLayer(input_shape=input_shape, name='encoder_input'),
dense_layers(intermediary_dims),
tfkl.Dense(tfpl.MultivariateNormalTriL.params_size(latent_dim), activation=None),
tfpl.MultivariateNormalTriL(latent_dim,
activity_regularizer=tfpl.KLDivergenceRegularizer(prior)),
], name='encoder')

encoder.summary()

decoder = tfk.Sequential([
tfkl.InputLayer(input_shape=[latent_dim]),
dense_layers(reversed(intermediary_dims)),
tfkl.Dense(tfpl.IndependentNormal.params_size(original_dim), activation=None),
tfpl.IndependentNormal(original_dim),
], name='decoder')

decoder.summary()

vae = tfk.Model(inputs=encoder.inputs,
outputs=decoder(encoder.outputs[0]),
name='vae_mlp')

negloglik = lambda x, rv_x: -rv_x.log_prob(x)

vae.compile(optimizer=tf.keras.optimizers.RMSprop(),
loss=negloglik)

vae.summary()

这是我尝试保存模型的方法:
tf.keras.models.save_model(
vae,
"/opt/notebooks/saved/vae/1",
overwrite=True,
include_optimizer=True,
save_format=None,
signatures=None,
options=None
)

最佳答案

长期解决方案包括插入 tensorflow bug #742等待修复。同时,你可以做我所做的,修改文件 tensorflow_probability/python/layers/distribution_layer.py 中的 tensorflow 代码。 .我所做的是:

  • 添加 checkin _make_kl_divergence_fn函数,以避免在输入为 Tensor 时计算散度对象,像这样:

  •     with tf.name_scope('kldivergence_loss'):
    if isinstance(distribution_a, tf.Tensor):
    return 0.0
    ...
  • 要么改KLDivergenceRegularizer对于 KLDivergenceAddLoss图层,或添加 get_config方法到 KLDivergenceRegularizer对象:

  •   def get_config(self):
    config = {'use_exact_kl': self._use_exact_kl,
    'test_points_reduce_axis': self._test_points_reduce_axis,
    'weight': self._weight}
    return dict(list(config.items()))

    关于python - 获取属性错误 : 'Tensor' object has no attribute 'log_prob' while saving a tensorflow model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62412868/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com