我收到以下错误消息:'Tensor'对象没有属性'log_prob'

时间:2019-05-18 03:35:26

标签: python tensorflow

我收到此错误

  

AttributeError:“ Tensor”对象没有属性“ log_prob”

在使用Tensorflow概率实现变分自动编码器时。

def dense_layers(sizes):
    return tfk.Sequential([tfkl.Dense(size, activation=tf.nn.leaky_relu) for size in sizes])
encoder = tfk.Sequential([
    tfkl.InputLayer(input_shape=input_shape, name='encoder_input'),
    dense_layers(intermediary_dims),
    tfkl.Dense(latent_dim, activation = tf.nn.leaky_relu),
    tfkl.Dense(tfpl.MultivariateNormalTriL.params_size(latent_dim), activation=None),
    tfpl.MultivariateNormalTriL(latent_dim,activity_regularizer=tfpl.KLDivergenceRegularizer(prior)),
], name='encoder')

encoder.summary()
plot_model(encoder, to_file='vae_mlp_encoder.png', show_shapes=True)

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()
plot_model(decoder, to_file='vae_mlp_decoder.png', show_shapes=True)

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

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

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

vae.summary() # summary
plot_model(vae,
           to_file='vae_mlp.png',
           show_shapes=True) #plotting the model 

#I was expecting the Vae.summary 

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我安装了最新版本的Tensorflow概率:

! pip install --upgrade tfp-nightly
! pip install tf_nightly
! pip install tf_estimator_nightly