python - 贝叶斯神经网络
问题描述
我正在研究贝叶斯神经网络并遇到很多问题。
我发现这个Keras 实现,但我觉得很难理解。
就像函数先验和后验一样,我不明白 kernel_size 和 bias_size 是什么以及它们来自哪里。此外,我也不明白它们是如何在 create_bnn_model 函数中调用的。谁能给我解释一下?非常感谢。先验功能和后验功能
def prior(kernel_size, bias_size, dtype=None):
n = kernel_size + bias_size
prior_model = keras.Sequential([
tfp.layers.DistributionLambda(
lambda t: tfp.distributions.MultivariateNormalDiag(
loc=tf.zeros(n), scale_diag=tf.ones(n)
))
])
return prior_model
def posterior(kernel_size, bias_size, dtype=None):
n = kernel_size + bias_size
posterior_model = keras.Sequential(
[
tfp.layers.VariableLayer(
tfp.layers.MultivariateNormalTriL.params_size(n), dtype=dtype
),
tfp.layers.MultivariateNormalTriL(n),
]
)
return posterior_model
def create_bnn_model(train_size):
inputs = create_model_inputs()
features = keras.layers.concatenate(list(inputs.values()))
features = layers.BatchNormalization()(features)
for units in hidden_units:
features = tfp.layers.DenseVariational(
units=units,
make_prior_fn=prior,
make_posterior_fn=posterior,
kl_weight=1 / train_size,
activation="sigmoid",
)(features)
outputs = layers.Dense(units=1)(features)
model = keras.Model(inputs=inputs, outputs=outputs)
return model
解决方案
推荐阅读
- html - 一键打开多个引导折叠面板
- python - 如何在pygame窗口中包含一系列视频帧
- azure - 是否可以将 .net 核心 web api 发布到 azure 函数?
- javascript - Hyperledger Fabcar 链码问题
- mysql - How to count how many consecutive days a user is tagged as orange in MYSQL?
- python - pylint 警告 - 不可订阅对象
- c# - 初学者用 C# 制作基于控制台的 RPG,房间导航有一些问题
- python - 龟蟒中的“if”有问题
- c# - 使用相同的 CultureInfo 时,不同计算机上的格式不同,为什么?
- php - PHP Curl POST 请求到 iFrame