没有合适的资源?快使用搜索试试~ 我知道了~
Pytorch和JAX中的变分神经网络实现
软件影响14(2022)100431原始软件出版物变分神经网络在Pytorch和JAX中的实现Illia Oleksiienkoa,Dat Thanh Tranb,Alexandros Iosifidisaa丹麦奥胡斯大学电子与计算机工程系b芬兰坦佩雷大学计算科学系自动清洁装置保留字:贝叶斯神经网络贝叶斯深度学习不确定性估计PyTorchJaxA B标准贝叶斯神经网络考虑网络权重的分布,这提供了一种通过对每个输入的不同模型进行采样来估计神经网络的不确定性的工具。变分神经网络(VNN)考虑每一层输出的概率分布,并为其生成相应子层的参数。我们提供了两个Python实现的VNN与PyTorch和JAX机器学习库,以确保实验结果的再现性,并允许在其他项目中轻松实现不确定性估计方法代码元数据当前代码版本v1.0.0用于此代码版本的代码/存储库的永久链接https://github.com/SoftwareImpacts/SIMPAC-2022-198Reproducible Capsule的永久链接https://codeocean.com/capsule/2963476/tree/v1合法代码许可证Apache-2.0许可证使用Git的代码版本控制系统使用Python、R、LATEX的软件代码语言、工具和服务编译要求,操作环境依赖性Pytorch/JAX(Tensorflow),plotnine,pandas,numpy,neural-tangents,scipy,scikit-learn,dm-haiku,dm-acme,chex,optax,fire,tqdm,tensorboard,tensorboardX,torchvision,absl-py,tensorflow如果可用,链接到开发人员文档/手册问题支持电子邮件io@ece.au.dk1. 介绍神经网络中的不确定性估计提供了一种检测可能由缺乏训练数据或分布外样本引起的预测错误的能力。这些故障可能在常规神经网络中悄无声息地发生,并在关键任务中造成危险,例如医学图像分析或自动驾驶。为了估计网络BNN在神经网络的权重上引入概率分布。对于每个输入,他们从权重分布中抽取一组不同的模型,这些模型从不同的角度描述它。这些不同模型的预测偏差是对特定输入的网络不确定性的估计。与为输入提供点估计的神经网络相比,BNN通常会增加计算成本和内存需求权值概率分布的选择会导致不同的计算代价,但也会影响网络的统计质量。 这是因为更复杂和参数化的分布允许更大的自由度,但需要更多的计算来训练和执行网络,而简化的分布可能无法代表手头的问题。现有的方法探索了各种分布,包括高斯分布[4,5]、伯努利分布[6]和分类分布[7]变分神经网络(VNN)[8]通过考虑每层输出的分布并通过处理具有相应子层的输入来生成分布的参数,为神经网络引入了一种新型的保持低本文中的代码(和数据)已由Code Ocean认证为可复制:(https://codeocean.com/)。更多关于生殖器的信息徽章倡议可在https://www.elsevier.com/physical-sciences-and-engineering/computer-science/journals上查阅。*通讯作者。电子邮件地址:io@ece.au.dk(I. Oleksiienko),thanh. tuni.fi(D.T. Tran),ai@ece.au.dk(A.Iosifidis)。https://doi.org/10.1016/j.simpa.2022.100431接收日期:2022年9月13日;接受日期:2022年10月11日2665-9638/©2022作者。由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表软件影响杂志 首页:www.journals.elsevier.com/software-impactsI. Oleksiienko,D.T. Tran和A. Iosifidis软件影响14(2022)1004312Fig. 1. VNN(R1)的PyTorch实现的结构。的计算成本和存储器要求,我们考虑高斯分布及其参数,即,平均值和方 差 , 由 相 应 的 子 层 生 成 。 如 [8] 所 示 , 与 Monte Carlo Dropout(MCD)[6]和Bayes By Backprop(BBB)[4]相比,VNN实现了更好的不确定性质量,同时从贝叶斯模型平均的角度来看,这些方法2. 影响概述VNN的代码库被分成两个具有不同目的的实现。PyTorch实现(R1)使用Python 3 [9]和机器学习框架PyTorch [10]以及MNIST [11]和CIFAR-10 [12]数据集上的图像分类实验代码提供了VNN的通用实现。JAX实现(R2)建立在认知神经网络[15]的JAX [13]实现[14]之上,并提供了一个JAX版本的VNN以及不确定性质量估计实验。该软件提供了研究结果的完全再现性在[8]中,并包括用于生成图和表的代码,这意味着验证结果和基于VNN创建新实验应该是一项简单的任务。该软件的结构是模块化的,并允许快速实现额外的方法或使用现有的方法在现有的项目中,通过替换层的常规神经网络与软件提供的3. 功能和主要特点PyTorch实现(R1)。VNN以模块化的方式编程,其中每个测试的不确定性估计方法,包括VNN,贝叶斯反向传播(BBB)[4],蒙特卡罗丢弃(MCD)[6],深度集成[7]和超模型[5],都是使用公共训练接口实现的,并与实际网络架构隔离。R1的文件结构如图1所示,包括• main.py 是实现培训和评估函数来训练和测试感兴趣的模型。• network.py实现了一个Network类,它封装了训练、运行、加载和保存模型所需• architectures文件夹包含一组实现模型体系结构类的脚本,如ResNet、DenseNet和更简单的体系结构。这些类派生自Network类,并将卷积层和线性层作为通用参数,允许为同一网络架构创建具有不同不确定性方法的模型。• classic.pyvariational.pyhypermodel.py ensemble.py dropout.py通过创建感兴趣的方法的卷积层和线性层来实现对应的不确定性方法,或者通过创建感兴趣的方法的卷积层和线性层来实现对应的不确定性方法。全网发电机通过将这些实现提供给架构创建器,将生成用于所选不确定性方法和架构• params.py包含MNIST和CIFAR-10数据集的数据生成器,所有网络创建者的字符串索引字典,损失函数,激活函数和优化器。• modeling.py是一个替代入口点,用于为每个不确定性方法生成实验集并并行运行。• tools/create-grouped-tex-report.py收集来自培训人员建模并生成一个LATEXtable表,每个网络类型有两个最佳条目所呈现的存储库结构允许轻松扩展项目:• 添加新的网络类型需要实现卷积层和线性层(如classic.py、dropout.py、variational.py所示),或将架构作为输入的网络创建器(如ensemble.py、hypermodel.py所示)。• 添加一个新的架构需要实现它与卷积和线性层类作为参数。• 添加新图层类型需要实现其版本对于每种网络类型,这通常是直接的,下面是已经实现的。• 将这些方法用于其他项目可以通过将层实现复制到具有经典神经网络的现有项目并将网络中的常规层替换为所需的层来实现。JAX实现(R2)。是基于认知神经网络库[14],并提供了一个代码来重现不 确 定 性 质 量 实 验 。 R2 的 所 有 主 文 件 均 位 于 enn/experiments/neurips_2021,文件结构如下:• run_testbed.py是一个入口点,它为选定的实验参数生成一个问题,并为选定的方法训练一组模型。• agent_factories.py包含每个不确定方法和函数的模型创建器,用于创建具有不同参数的网络。• enn/networks文件夹包含不同不确定性方法的实现。I. Oleksiienko,D.T. Tran和A. Iosifidis软件影响14(2022)1004313• tools/create_enn_plots.py用于为每种方法、实验组和摘要生成图竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢这项工作已获得欧盟地平线2020研究和创新计划的资助本出版物仅反映作者的观点。欧盟委员会对可能使用其所包含信息引用[1]DJ Mackay,Probable Networks and Plausible Predictions - A Review ofPracticalBayesian Methods for Supervised Neural Networks,Network:Comput. 神经系统6(3)(1995)469-505.[2] A.G. Wilson,P. Izmailov,Bayesian Deep Learning and a Probabilistic Perspectiveof Generalization,2020,arXiv:2002.08791。[3] T.查诺克湖Perreault-Levasseur,F. Lanusse,贝叶斯神经网络,2020,arXiv:2006.01490。[4] C. Blundell,J. Cornebise,K.卡武克库奥卢D. Wierstra,Weight uncertainty inneural networks,2015,arXiv:1505.05424。[5] V. Dwaracherla,X.卢,M.希希米岛Osband,Z. Wen,B.V. Roy,Hypermodels forexploration,2020,arXiv:2006.07464.[6] Y.加尔,Z。Ghahramani,Dropout as a Bayesian approximation:Representingmodel uncertainty in deep learning,2016,arXiv:1506.02142。[7] I. Osband,J. Aslanides,A. Cassirer,深度强化学习的随机先验函数,2018,arXiv:1806.03335。[8] I. Oleksiienko,D.T. Tran,A. Iosifidis,变分神经网络,2022,arXiv:2207.01524。[9] G. Van Rossum,F.L. Drake,Python 3 参考 手动, 空间, 2009.[10] A. 帕斯克河格罗斯,F。Massa,A.Lerer,J.Bradbury,G.Chanan,T.基林,Z.林,N. 吉梅尔辛湖Antiga,A.Desmaison,A.Kopf,E.杨,Z.DeVito,M.赖森,A. Tejani,S. 奇拉姆库尔蒂湾 施泰纳湖,澳-地 Fang,J. Bai,S. Chintala,Pytorch:一个命令式的高性能深度学习库,在:神经信息处理系统的进展,第32卷,Curran Associates,Inc., 2019年,页8024-8035[11]L.邓,用于机器学习研究的手写数字图像的mnist数据库,IEEE信号处理。麦格29(6)(2012)141[12] A. Krizhevsky,从微小图像中学习多层特征,Tech。Rep,2009.[13] 布拉德伯里河放大图片作者:C.Leary,D.麦克劳林,G. Necula,A. Paszke,J. VanderPlas,S. Wanderman-Milne,Q. Zhang,JAX:Python+NumPy程序的可组合转换,2018,URLgithub.com/google/jax。[14] I. Osband,Z.温,M. Asghari,M. X.A. himi,X. Lu,B.V. Roy,认知神经网络实现,2021,URLhttps://github.com/deepmind/enn。[15] I. Osband,Z.温,M. Asghari,M. X.A. himi,X. Lu,B.V. Roy,认知神经网络,2021,arXiv:2107.08924。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功