小编mac*_*any的帖子

变量 tf.Variable 在 TensorFlow Probability 中的梯度为“无”

我在 TFP 中构建基本 BNN 时遇到问题。一般来说,我是 TFP 和 BNN 的新手,所以如果我错过了一些简单的东西,我深表歉意。

我可以通过执行以下操作在 Tensorflow 中训练一个基本的神经网络:

model = keras.Sequential([
    keras.layers.Dense(units=100, activation='relu'),
    keras.layers.Dense(units=50, activation='relu'),
    keras.layers.Dense(units=5, activation='softmax')
])

model.compile(optimizer=optimizer, 
              loss=tf.losses.CategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

history = model.fit(
    training_data.repeat(), 
    epochs=100, 
    steps_per_epoch=(X_train.shape[0]//1024),
    validation_data=test_data.repeat(), 
    validation_steps=2
)
Run Code Online (Sandbox Code Playgroud)

但是,我在尝试使用 tfp DenseFlipout 层实现类似的架构时遇到了麻烦:

model = keras.Sequential([
    tfp.layers.DenseFlipout(units=100, activation='relu'),
    tfp.layers.DenseFlipout(units=10, activation='relu'),
    tfp.layers.DenseFlipout(units=5, activation='softmax')
])

model.compile(optimizer=optimizer, 
              loss=tf.losses.CategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])

history = model.fit(
    training_data.repeat(), 
    epochs=100, 
    steps_per_epoch=(X_train.shape[0]//1024),
    validation_data=test_data.repeat(), 
    validation_steps=2
)
Run Code Online (Sandbox Code Playgroud)

我收到以下值错误:

ValueError: 
Variable <tf.Variable 'sequential_11/dense_flipout_15/kernel_posterior_loc:0' 
shape=(175, 100) dtype=float32> has `None` for gradient. 
Please make sure that all of your ops …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow tensorflow-probability

6
推荐指数
1
解决办法
1650
查看次数