基于贝叶斯深度学习的不确定性量化框架

机器学习不确定性量化:贝叶斯、集成与证据深度学习方法全解析 在机器学习与人工智能领域,模型预测的可靠性评估是构建可信系统的核心挑战。不确定性量化(Uncertainty Quantification)技术旨在解决这一问题,其核心原理是通过概率框架或模型多样性来度量预测的可信度。从技术价值看,它不仅提升了模型的透明度和决策安全性,还能有效识别分布外数据,防止模型在未知场景下过度自信。在自动驾驶、医疗诊断、金融风控等安全关键场景中,准确的不确定性估计是实现人机协同与风险控制的基础。本文深入探讨了实现不确定性量化的三大主流技术路径:基于概率推断的贝叶斯方法、注重工程实践的 阅读详情

目录

核心思想:从点估计到概率分布

方法详细步骤

第1步:选择贝叶斯推理方法

第2步:构建贝叶斯深度学习模型

第3步:训练与推理(不确定性量化)

第4步:解读与决策支持

高级实现:同时量化两种不确定性

总结与决策流程



核心思想:从点估计到概率分布

传统深度学习模型输出一个确定的预测值(一个点),我们完全相信这个值。贝叶斯深度学习的核心思想是:模型的所有参数(权重)本身不是一个确定的值,而是一个概率分布。因此,对于给定的输入,模型的预测也是一个概率分布。这个分布的方差(Spread) 就直接量化了模型对于此次预测的不确定性(Uncertainty)。

在城轨视觉中,这种不确定性主要分为两类:

  1. 认知不确定性(Epistemic Uncertainty):源于模型自身的认知不足。例如,模型从未见过某种新型裂缝或是在光照极差的条件下工作。“模型不知道它不知道”。这种不确定性可以通过提供更多训练数据来减少。

  2. 偶然不确定性(Aleatoric Uncertainty):源于数据固有的噪声。例如,图像本身的模糊、遮挡、分辨率低。这种不确定性是数据固有的,无法通过增加数据减少。

我们的目标是同时量化这两种不确定性。

方法详细步骤

第1步:选择贝叶斯推理方法

对于深度神经网络,精确的贝叶斯推理是难解的。我们采用近似方法,最实用且与现有框架兼容的两类是:

a) 蒙特卡洛 Dropout (MC Dropout)

  • 原理:在训练和测试时,都在网络的每一层后使用Dropout。Dropout的随机性相当于从模型的权重后验分布中进行采样。每次前向传播相当于用一个不同的网络进行预测。

  • 优势:实现极其简单,只需在现有模型中添加测试时的Dropout,无需改变模型结构或损失函数。

b) 变分推理 (Variational Inference, VI)

  • 原理:假设模型的权重服从一个简单的分布(如高斯分布),然后寻找一个最接近真实复杂后验分布的近似分布 $q(\omega)$。通过优化证据下界(ELBO)来学习这个分布的参数(均值和方差)。

  • 优势:理论更坚实,通常能产生更准确的不确定性估计,但实现更复杂。

第2步:构建贝叶斯深度学习模型

以最经典的编码器-解码器结构为例,用于像素级的裂缝宽度回归任务。

python

复制

下载

import torch
import torch.nn as nn
import torch.nn.functional as F

class BayesianConv2d(nn.Module):
    """一个简单的贝叶斯卷积层实现(采用MC Dropout方法)"""
    def __init__(self, in_channels, out_channels, kernel_size, dropout_rate=0.2):
        super().__init__()
        self.conv = nn.Conv2d(in_channels, out_channels, kernel_size, padding=kernel_size//2)
        self.dropout = nn.Dropout2d(p=dropout_rate) # 使用空间Dropout

    def forward(self, x):
        x = self.conv(x)
        x = self.dropout(x) # 注意:训练和测试时均保持开启!
        return F.relu(x)

class BayesianEncoderDecoder(nn.Module):
    """一个用于像素级回归的贝叶斯U-Net类结构"""
    def __init__(self, dropout_rate=0.2):
        super().__init__()
        # 编码器
        self.enc1 = BayesianConv2d(3, 64, 3, dropout_rate)
        self.enc2 = BayesianConv2d(64, 128, 3, dropout_rate)
        # 解码器
        self.dec1 = BayesianConv2d(128, 64, 3, dropout_rate)
        self.final_conv = nn.Conv2d(64, 1, 1) # 输出每个像素的裂缝宽度

    def forward(self, x):
        # 编码路径
        x1 = self.enc1(x)
        x2 = self.enc2(F.max_pool2d(x1, 2))
        # 解码路径 (简化,省略跳跃连接)
        x = F.interpolate(x2, scale_factor=2, mode='bilinear', align_corners=True)
        x = self.dec1(x)
        return self.final_conv(x)
第3步:训练与推理(不确定性量化)

训练阶段:与普通网络训练完全相同。Dropout作为正则化器,防止过拟合。

推理阶段(关键):对同一张输入图像进行 $T$ 次前向传播(例如 $T=50$),每次都会因Dropout的随机性而得到 slightly different 的输出。

python

复制

下载

def quantify_uncertainty(model, input_image, num_samples=50):
    """
    执行蒙特卡洛采样,量化预测的不确定性。
    Args:
        model: 训练好的贝叶斯模型
        input_image: 输入图像 [1, C, H, W]
        num_samples: 采样次数 T
    Returns:
        mean_prediction: 平均预测值 [H, W]
        epistemic_uncertainty: 认知不确定性 [H, W] (方差)
        aleatoric_uncertainty: 偶然不确定性 [H, W] (可选,需要修改模型输出)
    """
    model.train()  # 关键!将模型设置为训练模式以启用Dropout

    predictions = []
    for _ in range(num_samples):
        with torch.no_grad(): # 不需要计算梯度,加速推理
            output = model(input_image) # [1, 1, H, W]
            predictions.append(output.squeeze().cpu().numpy()) # [H, W]

    # 将多次采样结果堆叠
    predictions_stack = np.stack(predictions, axis=0) # [T, H, W]

    # 计算不确定性
    mean_prediction = np.mean(predictions_stack, axis=0)   # 平均预测值 [H, W]
    epistemic_uncertainty = np.var(predictions_stack, axis=0) # 认知不确定性 (方差) [H, W]

    return mean_prediction, epistemic_uncertainty

# 使用示例
mean_width_map, uncertainty_map = quantify_uncertainty(bayesian_model, test_image)
第4步:解读与决策支持

得到的 mean_prediction 和 epistemic_uncertainty 地图为运维决策提供了前所未有的丰富信息。

  1. 高置信度损伤(需处理):
    mean_prediction[x,y] > 阈值 且 uncertainty_map[x,y] < 阈值_u

    • 解读:模型非常确定此处有损伤,且尺寸为 $(0.5 \pm 0.1)$ mm。决策:立即安排维修,可靠性高。

  2. 高不确定性区域(需复查):
    uncertainty_map[x,y] 值很高。

    • 解读:模型对此处的预测把握很低。可能原因是:新型损伤、严重遮挡、图像模糊。

    • 决策:触发人工复查或派遣更高精度的传感器(如激光扫描)进行确认。这避免了基于误报的无效停工。

  3. 低置信度正常(可观察):
    mean_prediction[x,y] < 阈值 且 uncertainty_map[x,y] < 阈值_u

    • 解读:模型确信此处正常。决策:无需关注,节省人力。

  4. 预测区间:
    假设预测分布近似高斯,我们可以计算 95% 置信区间:
    lower_bound = mean_prediction - 1.96 * np.sqrt(epistemic_uncertainty)
    upper_bound = mean_prediction + 1.96 * np.sqrt(epistemic_uncertainty)

    • 输出:“裂缝宽度为 $0.5$ mm,95%置信区间为 $[0.4, 0.6]$ mm”。

高级实现:同时量化两种不确定性

为了区分认知和偶然不确定性,可以修改模型,让其同时输出预测的均值和方差。

python

复制

下载

class BayesianEncoderDecoderWithAleatoric(nn.Module):
    def __init__(self, dropout_rate=0.2):
        super().__init__()
        # ... 编码器部分相同 ...
        # 修改最终层,输出两个通道:均值和方差(log variance)
        self.final_conv = nn.Conv2d(64, 2, 1)

    def forward(self, x):
        # ... 前面层不变 ...
        output = self.final_conv(x) # [B, 2, H, W]
        mean = output[:, 0:1, :, :]  # 均值通道
        log_var = output[:, 1:2, :, :] # 对数方差通道
        return mean, log_var

# 损失函数需要修改为负对数似然(NLL Loss)
def nll_loss_gaussian(mean, log_var, target):
    """负对数似然损失,用于回归"""
    var = torch.exp(log_var) # 确保方差为正数
    return 0.5 * (torch.log(var) + (target - mean)**2 / var).mean()

# 推理时
def quantify_uncertainty_advanced(model, input_image, num_samples=50):
    model.train()
    means = []
    log_vars = [] # 捕捉偶然不确定性

    for _ in range(num_samples):
        with torch.no_grad():
            mean_sample, log_var_sample = model(input_image)
            means.append(mean_sample)
            log_vars.append(log_var_sample)

    means_stack = torch.stack(means) # [T, 1, H, W]
    log_vars_stack = torch.stack(log_vars) # [T, 1, H, W]

    # 总不确定性 = 认知不确定性 + 平均偶然不确定性
    epistemic_uncertainty = torch.var(means_stack, dim=0) # [1, H, W]
    aleatoric_uncertainty = torch.mean(torch.exp(log_vars_stack), dim=0) # [1, H, W]
    total_uncertainty = epistemic_uncertainty + aleatoric_uncertainty

    mean_prediction = torch.mean(means_stack, dim=0)
    return mean_prediction, epistemic_uncertainty, aleatoric_uncertainty, total_uncertainty

总结与决策流程

该框架的最终输出不再是一个简单的“是/否”或一个数字,而是一个决策仪表盘:

预测均值 (损伤程度)认知不确定性 (模型疑惑)偶然不确定性 (数据噪声)推荐决策
高低低立即维修:确定性的严重损伤。
低低低无需行动:确定性的健康状态。
中/高高低人工复查:模型没见过类似案例,需专家确认。
中/高低高重新检测:图像质量太差(模糊、遮挡),需用更高精度设备重新采集数据。
高高高最高优先级复查:可能既是新型损伤,图像质量又差,风险极高。

通过这种方式,贝叶斯深度学习将人工智能从一個“黑箱预言家”变成了一个“透明的、自知之明的专家顾问”,其提供的不确定性度量与点预测同等重要,共同为城轨基础设施的安全、高效、智能化运维提供了最可靠的决策依据。

B-PINNs(贝叶斯物理信息神经网络)火力全开!现成创新思路,拿走不谢! AI科研灵感致力于成为您在人工智能领域的领航者,定期更新人工智能领域的重大新闻与最新动态,和您一起探索AI的无限可能。立即关注我们,开启您的AI学习之旅! 阅读详情

相关推荐

深度学习模型不确定性量化实战:从贝叶斯推断到MC Dropout实现

在机器学习与深度学习领域,模型预测的可信度评估是构建稳健AI系统的关键。传统模型通常只输出点估计,缺乏对预测不确定性的度量,这在自动驾驶、医疗诊断等高风险场景中可能带来隐患。从原理层面,不确定性可分为数据固有的偶然不确定性和模型认知不足导致的认知不确定性。贝叶斯推断为量化认知不确定性提供了理论框架,通过将模型参数视为概率分布,并计算预测分布的离散程度来反映模型对自身知识的把握度。然而,深度神经网络的高维参数空间使精确贝叶斯推断难以实现,这催生了蒙特卡洛Dropout等高效近似方法。该技术通过保持Dropou

weixin_30251829的博客 654

不确定性量化

不确定性量化(Uncertainty Quantification, UQ)是评估和表示模型预测、参数估计或系统行为中不确定性的过程,旨在为决策提供可信度评估和风险控制。其在科学计算、工程预测、金融风控和医疗诊断等领域具有核心价值。

weixin_71288092的博客 7088

医疗文本分类中的不确定性量化:MADE基准与实践指南

在自然语言处理领域,文本分类是基础且关键的技术,广泛应用于信息检索、内容分析等场景。其核心原理是通过机器学习模型学习文本特征与标签之间的映射关系。在医疗健康等高风险领域,模型的可靠性至关重要,这引出了不确定性量化技术——它评估模型对自身预测的把握程度,而非单纯追求准确率。这项技术的价值在于提升AI系统的可信度和安全性,使其能够识别认知局限,辅助而非替代人类决策。应用场景尤其集中在电子病历分析、影像报告解读等容错率低的医疗文本处理中。本文聚焦医疗文本多标签分类,深入探讨如何通过MADE基准系统评估模型的不确定

weixin_30634661的博客 335

深度学习中的不确定性量化:技术、应用和挑战综述(一)

不确定性量化(UQ)在减少优化和决策过程中的不确定性方面起着关键作用,应用于解决各种现实世界的科学和工程应用。贝叶斯近似和集成学习技术是文献中使用最广泛的两种UQ方法。在这方面,研究人员提出了不同的UQ方法,并测试了它们在各种应用中的性能,如计算机视觉(如自动驾驶汽车和物体检测)、图像处理(如图像恢复)、医学图像分析(如医学图像分类和分割)、自然语言处理(如文本分类、社交媒体文本和惯犯风险评分)、生物信息学等。

liangdaojun的博客 1万+

18、应用贝叶斯深度学习:模型校准与主动学习数据选择

本文探讨了贝叶斯深度学习在模型校准和主动学习中的应用。通过测量预期校准误差(ECE)评估模型在数据集偏移下的可靠性,并利用认知不确定性进行数据选择,以提升主动学习效率。实验使用 MNIST 数据集,比较了不同模型(vanilla、ensemble、bbb)在校准性能上的差异,同时对比了基于不确定性和随机选择的数据采样方法。结果显示,贝叶斯方法在面对数据偏移时能更准确地反映预测可信度,而基于不确定性的主动学习能够在较少数据下显著提升模型性能。

rgv23456789的博客 148

Unidbg逆向阿里系App签名:从环境补全到算法还原实战

在移动安全与协议分析领域,理解应用层签名机制是核心挑战之一。签名算法作为保障通信安全与身份验证的关键技术,其原理通常涉及哈希、加密及密钥协商等基础密码学概念。在Android平台,核心签名逻辑常被加固并隐藏于Native层SO库中,以对抗动态调试与静态分析,这为安全研究和协议兼容带来了技术障碍。Unidbg作为一种基于模拟执行的逆向工程工具,通过模拟ARM指令集和系统调用,允许研究者在脱离真机环境的情况下,可控地执行和调试SO文件,为解决此类问题提供了创新思路。其技术价值在于实现了对加固代码的确定性分析与算

weixin_42525738的博客 940

惊呆了!Oracle 11g从入门到放弃的保姆级指南(新手必看)

本文为Oracle 11g数据库新手提供了一份详尽的入门指南。内容涵盖从安装配置、SQL*Plus工具使用、核心的SQL增删改查操作,到事务、索引等进阶概念的解析。文章旨在帮助初学者避开常见陷阱,快速掌握这一经典关系型数据库管理系统的基本操作与核心技能,实现从入门到上手。

ooo22的博客 269

贝叶斯卷积神经网络:不确定性量化的革命性突破

当传统卷积神经网络在关键决策中过度自信时,我们如何为人工智能注入谦逊与可靠性?🚀 答案就隐藏在贝叶斯深度学习的概率世界中。凯泽斯劳滕大学的这项突破性研究,通过变分推断实现了贝叶斯卷积神经网络(BayesCNN),为下一代可信AI系统奠定了坚实基础。 ## 为什么传统CNN需要贝叶斯变革? 传统神经网络依赖点估计权重,在数据丰富区域表现卓越,但在稀疏数据区域往往产生过度自信的预测。这种局限性在

gitblog_01051的博客 945

Teams会议翻译对比测试:Copilot同传 vs 人工翻译,结果出乎意料

本文通过对比测试Microsoft 365 Copilot的实时翻译与专业人工翻译在Teams会议中的表现,揭示了AI同传技术在准确率、响应速度和多语言切换方面的优势与局限。实验数据显示,Copilot在常规商务场景下接近人工翻译水平,且成本效益显著,但在专业术语和文化特定表达上仍需人工辅助。

weixin_29054195的博客 224

【笔记篇】Davinci Configurator EcuM模块

autosar ecum模块简介

weixin_47571898的博客 1270

贝叶斯深度学习:赋予AI不确定性感知的认知革命

传统深度学习:追求“最可能答案”贝叶斯深度学习:回答“答案的可信度是多少”其本质是让AI具备认知谦逊(Epistemic Humility)高风险决策(医疗、金融、自动驾驶)小样本学习(科学实验、罕见病诊断)开放环境感知(机器人应对未知场景)可解释性要求(司法、金融审计)随着计算硬件的进步和近似推断算法的成熟,贝叶斯深度学习正成为构建可信赖AI系统的核心支柱。本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。

拒绝AI玄学,只聊真技术▲ 1330

如何在 Mac 上下载安装 Xcode——并为 iOS 开发更新它原文

下载 Xcode安装命令行工具打开新版本删除文件注意,我在下面的步骤中列出了一些终端命令。这些命令可以被输入到你现在的工作目录中。这意味着你不需要导航到任何特定的文件夹。如果你真的想这样做,你可以在输入下面的步骤中的命令之前先输入== cd==。这将使你返回到主文件夹。

专注于AI领域前沿知识,业余爱好开发软件 4670

基于Transformer的不确定量化地磁指数预测框架

地磁活动对地球有着至关重要的影响,能够波及航天器和电网系统。地球空间科学家使用一种名为Kp指数的地磁指数来描述地磁活动的总体水平。该指数是地球磁场扰动的重要指标,被美国空间天气预报中心用作可能受扰动影响的用户的警报和预警服务。另一个常用的指数,称为Ap指数,是由Kp指数转换而来的。对Kp和Ap指数的早期和准确预测对于防灾准备和风险管理至关重要。本文提出了一种名为GNet的深度学习框架,用于对Kp和Ap指数进行短期预测。

u014546828的博客 959

Cadence OrCAD Capture原理图中为功能模块分配ROOM的方法

本文详解介绍原理图设计阶段为原理图模块分配ROOM的方法。

fydar的博客 1348

【项目实战】DevOps制品管理之JFrog Artifactory介绍

JFrog Artifactory是一款领先的二进制软件制品仓库管理工具,由JFrog公司开发。

奶爸的编程之路,也就一周冷个三天 1356

如何在Burn框架中实现工业级贝叶斯深度学习:完整不确定性估计指南

Burn是下一代张量库和深度学习框架,它在灵活性、效率和可移植性方面毫不妥协。本指南将向你展示如何利用Burn框架的强大功能,实现工业级的贝叶斯深度学习模型,从而进行可靠的不确定性估计。 ## 为什么贝叶斯深度学习在工业应用中至关重要 在许多关键的工业应用中,仅仅得到模型的预测结果是不够的。例如,在医疗诊断、自动驾驶或金融风险评估中,了解预测的不确定性同样重要。贝叶斯深度学习通过将概率模型与深

gitblog_00139的博客 821

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

贝叶斯网络 神经网络_随机贝叶斯神经网络

贝叶斯网络 神经网络Bayesian neural networks have gained huge traction recently as they combine the flexibility, scalability and predictive performance with a probabilistic approach to measure uncertainty. 由于贝叶...

weixin_26632369的博客 1375

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

可微编程与概率编程:Pyro与NumPyro的贝叶斯深度学习

本文深入探讨了可微编程与概率编程在贝叶斯深度学习中的融合应用,系统对比了基于PyTorch的Pyro和基于JAX的NumPyro两个主流概率编程框架。文章从概率编程基础原理出发,详细分析了贝叶斯深度学习的数学框架和实现模式,展示了如何使用Pyro和NumPyro构建贝叶斯神经网络、量化预测不确定性,并通过时间序列预测案例进行实战演示。文中提供了大量可运行代码示例,涵盖模型定义、变分推断、MCMC采样等关键技术,同时讨论了两种框架的设计哲学、性能特点和适用场景。贝叶斯深度学习不仅提供更可靠的预测,还能量化认知

AladdinEdu,你的AI学习实践工作坊。让想法落地,让研究加速。助力高校AI人才成长,点亮创新未来。 1066

BDL Benchmarks vs 传统深度学习:医疗诊断场景下的不确定性量化优势

Bayesian Deep Learning Benchmarks(BDL Benchmarks)是一个开源框架,旨在弥合深度概率机器学习模型设计与实际应用之间的差距。在医疗诊断等关键领域,传统深度学习模型常因无法有效量化不确定性而面临决策风险,而BDL Benchmarks通过提供模块化评估接口和专家驱动的不确定性质量指标,为解决这一问题提供了完整解决方案。 ## 为什么医疗诊断需要不确定性量

gitblog_00931的博客 677

贝叶斯深度学习终极指南:如何让你的AI模型学会“说不知道“的智慧

在医疗诊断、自动驾驶、金融风控等关键领域,一个过于自信的AI模型可能会带来灾难性后果。传统深度学习模型就像那个总是说"我确定"的学生,即使面对完全陌生的问题也会给出高置信度的答案。而贝叶斯深度学习教会了AI说"我不确定"——这正是构建可靠人工智能系统的关键能力。 D2L.ai作为交互式深度学习权威教材,为我们揭示了贝叶斯方法如何让深度学习模型从"盲目自信"转变为"审慎智慧"。通过概率建模和不确定

gitblog_00322的博客 614

VLM-FS-EB框架:视觉语言模型与贝叶斯深度学习的融合创新

贝叶斯深度学习通过引入概率建模解决传统神经网络无法量化预测不确定性的关键缺陷,在医疗诊断等安全敏感领域尤为重要。函数空间变分推理(FSVI)作为其重要实现方式,通过直接在预测函数空间定义概率分布,避免了权重空间方法的近似误差问题。然而传统FSVI依赖高斯过程先验,面临高维数据表达能力不足和计算复杂度高的挑战。VLM-FS-EB创新性地结合视觉语言模型(VLMs)的跨模态理解能力和经验贝叶斯方法,利用预训练VLM的语义嵌入空间构建更具表达力的函数先验,并通过MC Dropout实现高效变分推断。该框架在数据稀

weixin_30988079的博客 305

基于贝叶斯物理信息神经网络的工业装备退化趋势预测方法(Pytorch)

本文提出了一种基于贝叶斯物理信息神经网络的工业装备退化趋势预测方法。该方法首先通过多尺度分析提取振动信号的时域、频域和时频域特征,构建高维特征向量;然后建立具有不确定性量化能力的贝叶斯神经网络,嵌入物理先验知识约束退化过程的单调性;最后采用递归预测策略模拟装备退化轨迹,计算剩余使用寿命。实验结果表明,该方法能有效预测设备退化趋势,并提供不确定性量化结果,为工业维护决策提供科学依据。

2301_78829506的博客 875

轴承剩余使用寿命多源融合预测与不确定性量化【附代码】

为了有效地融合来自不同分支的特征,本方法引入了自适应的通道注意力机制,它根据当前输入的特征动态地为每个分支的输出分配权重,权重的大小取决于该分支的输出在当前状态下的信息量。激进的策略选择较高的分位数,延长维护间隔以降低维护成本。与传统的神经网络参数为固定的点估计不同,贝叶斯网络的参数服从概率分布,通过学习这个参数分布,可以获得对预测结果的不确定性的显式表示。通过在测试阶段多次执行模型(每次关闭不同的神经元组合),可以得到多个不同的预测结果,这些结果的分布就近似于参数后验分布下的预测分布。

坷拉博士 168

深度学习中高斯过程推断原理与实践

深度学习中高斯过程推断原理与实践 【免费下载链接】d2l-en d2l-ai/d2l-en: 是一个基于 Python 的深度学习教程,它使用了 SQLite 数据库存储数据。适合用于学习深度学习,特别是对于需要使用 Python 和 SQLite 数据库的场景。特点是深度学习教程、Python、SQLite 数据库。 ...

gitblog_00354的博客 495
上一篇: 数据编码 + 加速异常检测”一体化 MATLAB 参考实现
下一篇: 论文题目:智能体在医疗场景的应用及赋能关键技术研究
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

交通上的硅基思维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值