问题标签 [bayesian-deep-learning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - 如何使用 PyTorch 计算 Monte Carlo Dropout 神经网络的不确定性?
我正在尝试在 Pytorch 上使用 Mc Dropout 实现贝叶斯 CNN,主要思想是通过在测试时应用 dropout 并运行许多前向传递,您可以从各种不同的模型中获得预测。我需要获得不确定性,有人知道我该怎么做吗?
这就是我如何定义我的 CNN '''
这是mc dropout的代码
'''
tensorflow - 如何计算 tensorflow_probability 层的梯度?
我想tensorflow_probability
使用tf.GradientTape()
. 这是相当简单的使用普通层,例如密集层
但是,如果我使用 DenseReparameterization 执行此操作,则毕业生注册无。
谁能告诉我如何解决这个问题,使渐变被录音并注册?
deep-learning - 反向传播的贝叶斯似然函数
我使用有限元方法综合生成我的回归数据。所以本质上我的合成数据是无噪音的。在这种情况下,有人可以帮助我理解如何编写似然函数吗?(我的 ELBO 的似然项)
我已经看到以下负对数似然函数的常见用法,如何在这里选择标准差的值?
python-3.x - 使用 .fit() 方法时,解码器的某些变量不存在梯度。帮助需要
我知道这个问题在 stackoverflow 和 github 中已经被多次提及,但在我的案例中似乎没有任何问题可以解决。我正在尝试使用 tensorflow_probability moodules 的变分自动编码器。在使用model.fit
方法训练模型时,我看到在第一个时期,有一个警告,即Gradient Do not exist for the weights and biases variables of the decoder when minimizing the loss
. 令人费解的部分是从第二个纪元开始,一切看起来都很正常并得到了输出。任何帮助将不胜感激以解决此问题。为了完整起见,提供了解码器和警告。
这是摘要。
这是 fit 方法:
**enc_klreg 是编码器。
这是警告:
tensorflow - 张量流概率的可训练先验
默认 Conv2DFlipout 层如下所示
有人可以告诉我如何在训练中涉及内核和偏见先验。默认的 multivariate_normal_fn 也看起来像这样,
它具有可训练的布尔参数之一,如果我将其设置为 True,则会引发以下错误。
有人可以帮我解决问题吗?
python - 通过反向传播对贝叶斯使用局部重新参数化技巧时正确的损失函数
我正在尝试根据Blundell 等人给出的反向传播方法的贝叶斯实现一个简单的线性层:Weight Uncertainty in Neural Networks。
首先,我使用了常规的重新参数化技巧,对权重分布进行采样,然后根据公式计算损失(如论文中所述):
在哪里
我的实现——以shishir13sharma为导向——因此如下所示:
但是,建议使用局部重新参数化技巧而不是常规重新参数化,因为(如果我没记错的话)它会导致更稳定和准确的优化过程。局部重新参数化意味着不是对权重进行采样,而是使用权重的平均值计算激活值,然后对激活的分布执行采样。
我的问题是:
我注意到其他实现(例如kumar-shridhar或ThirstyScholar)没有使用 Blundell 等人提出的比例混合先验方法。而是使用了封闭形式的变分自动编码器损失。然而,一些项目使用权重分布和先验之间的 KL 散度 (KL(q(w|theta)||P(w)),而另一些项目则使用激活分布 (KL(q(act|theta)| |P(w))。
当使用局部重新参数化技巧时,我是否必须对 KL 散度使用权重分布或激活分布,并且在局部重新参数化技巧中使用 Blundell 的比例混合先验方法是否有意义?
python - 张量流概率中流归一化的变分推理
上次我读到了一些关于使用规范化流来改进变分推理 fe Link1 Link2的内容。
Tensorflow 概率已经在 bijector 子模块中提供了 RealNVP 和 MaskedAutoregressiveFlow,并且在 layers 子模块中提供了 AutoregressiveTransform 层。因此,我认为构建一个经过变分推理训练的贝叶斯神经网络和使用 Tensorflow Probability 的归一化流给出的后验将是简单而直接的。
从其中一个教程(链接)开始,我能够构建一个带有 mean_field_posterior 的 BNN。
然后事情开始变得复杂起来。我编写了以下函数,改编自此示例 ( Link ),以生成使用掩码自回归流转换正态分布的后验。
比较terior_vi_maf 和terior_mean_field 的形状和输出,从技术角度来看,似乎一切都应该起作用。
不幸的是,运行训练脚本(见底部)会引发以下错误消息:
有什么建议为什么会发生这种情况和/或我该如何解决这个问题?
python - XGBoost 和 scikit-optimize:BayesSearchCV 和 XGBRegressor 不兼容 - 为什么?
我有一个非常大的数据集(700 万行,54 个特征),我想拟合回归模型以使用XGBoost
. 为了训练最好的模型,我想使用BayesSearchCV
fromscikit-optimize
对不同的超参数组合重复运行拟合,直到找到性能最好的集合。
对于给定的一组超参数,XGBoost
训练一个模型需要很长时间,所以为了找到最好的超参数而不需要花费数天时间在训练折叠、超参数等的每个排列上,我想多线程XGBoost
和BayesSearchCV
. 我的代码的相关部分如下所示:
但是,我发现n_jobs > 1
在BayesSearchCV
通话中,fit 崩溃并且我收到以下错误:
每当我在调用中使用超过 1 个线程时,此错误就会持续存在BayesSearchCV
,并且与我提供的内存无关。
这是XGBoost
and之间的一些基本不兼容scikit-optimize
,还是可以强制两个包以某种方式一起工作?如果没有某种多线程优化方式,我担心拟合我的模型需要数周时间才能执行。我能做些什么来解决这个问题?
python - 在 Tensorflow 中使用 DenseFlipout 层训练 BNN 模型后如何获得标准偏差和平均值?
在我训练贝叶斯神经网络模型并将其保存到 .h5 文件中后,我无法绘制其结果,因为我不知道模型训练的标准差和预测均值。我正在使用以下方法来获取预测:
所以基本上我正在尝试使用给定模型的 out.stddev() 计算标准偏差。但显然,这段代码中定义的 out 是一个张量,而不是具有模型标准偏差属性的某物。有谁知道如何使用 DenseFlipout 层从训练有素的贝叶斯神经网络中获得标准差?提前致谢!
svm - 我可以使用多类 SVM 来解决推理问题吗?
我有一个问题,我想找到属于每个班级的概率,我有 3 个班级。我知道我们可以考虑贝叶斯推理并解决它,但我想也许我可以使用多类 SVM 代替?您一般建议如何改进贝叶斯推理方法?