微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 .fit() 方法时,解码器的某些变量不存在梯度帮助需要

如何解决使用 .fit() 方法时,解码器的某些变量不存在梯度帮助需要

我知道这个问题在 stackoverflow 和 github 中已经多次提到,但在我的情况下似乎没有任何问题可以解决。我正在尝试使用 tensorflow_probability 模式的变分自动编码器。在使用 model.fit 方法训练模型时,我看到在第一个 epoch 期间,有一个警告 Gradient Do not exist for the weights and biases variables of the decoder when minimizing the loss。莫名其妙的部分是从第二个时代开始,一切似乎都很正常并且得到了输出。任何帮助将不胜感激解决此问题。为了完整起见,提供了解码器和警告。

dec_klreg = Sequential([
                  InputLayer(input_shape=[latent_size])]+
                 [Dense(unit,activation='relu') for unit in units[::-1]]+
                 [Dense(2*input_shape),tfpl.distributionLambda(
                      lambda t: tfd.MultivariatenormalDiag(
                          loc=t[...,:input_shape],scale_diag = tf.math.exp(t[...,input_shape:])
                      )
                  )
]) 

这是摘要

Model: "sequential_4"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_16 (Dense)             (None,8)                 24        
_________________________________________________________________
dense_17 (Dense)             (None,16)                144       
_________________________________________________________________
dense_18 (Dense)             (None,32)                544       
_________________________________________________________________
dense_19 (Dense)             (None,100)               3300      
_________________________________________________________________
distribution_lambda_3 (distr multiple                  0         
=================================================================
Total params: 4,012
Trainable params: 4,012
Non-trainable params: 0

这是适合的方法

    vae_klreg = tf.keras.Model(inputs = enc_klreg.input,outputs = dec_klreg(enc_klreg.output))
    vae_klreg.compile(optimizer= tf.keras.optimizers.Adam(learning_rate=0.001),loss = loss_mcmc_klreg)
    history = vae_klreg.fit(x_train,epochs=100,batch_size=1000,validation_split=0.1)

**enc_klreg 是编码器。

这里是警告:

Epoch 1/100
WARNING:tensorflow:Gradients do not exist for variables ['dense_16/kernel:0','dense_16/bias:0','dense_17/kernel:0','dense_17/bias:0','dense_18/kernel:0','dense_18/bias:0','dense_19/kernel:0','dense_19/bias:0'] when minimizing the loss.
WARNING:tensorflow:Gradients do not exist for variables ['dense_16/kernel:0','dense_19/bias:0'] when minimizing the loss.
9/9 [==============================] - 1s 39ms/step - loss: 1858.8081 - val_loss: 458.4520
Epoch 2/100
9/9 [==============================] - 0s 6ms/step - loss: 411.9823 - val_loss: 273.5398
Epoch 3/100
9/9 [==============================] - 0s 6ms/step - loss: 281.3841 - val_loss: 208.0804

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。