31、医学影像中的可解释人工智能应用

医学影像中的可解释人工智能应用

1. 高级别胶质瘤预测模型

在医学诊断中,对于高级别胶质瘤(High - Grade Glioma,HGG)的预测是一个重要的任务。给定一个输入样本,模型需要预测其对应的患者是否患有 HGG。胶质瘤具有一些临床医生认可的影像学特征,如液体衰减反转恢复序列(FLAIR)或 T2 加权高信号,以及明显的占位效应等,但这些特征通常只是一些线索。例如,占位效应虽然对胶质母细胞瘤具有预后意义,但却难以量化。

当使用 LRP - Epsilon 和 Deep Taylor 显著性图来揭示预测规则时,可以发现,尽管模型是针对全图像分类而非分割进行训练的,但它能够自行定位白质高信号(如图 11.2e 中的 LRP - Epsilon 图所示),并且似乎能够部分分离占位效应伪影(如图 11.2f 中的 Deep Taylor 图所示)。我们推测,虽然还需要进一步的工作,但这种事后预测图可以提供上述急需的影像学特征量化系统。

2. 人工智能模型的安全性和鲁棒性改进

在诊断医学中采用人工智能,信任是一个必要条件。为了支持机器辅助决策,病理学家首先要确保预测模型的准确性和泛化性能良好,即模型不仅要做出正确的预测,而且要有正确的决策依据。

2.1 确保模型决策依据正确

目前,许多人认为,鉴于当前深度神经网络(DNN)架构的高预测能力,要确保模型决策依据正确或避免明显错误,可能需要通过增加样本数据或采用启发式数据增强方案来增强模型的泛化能力。然而,即使是最详尽的数据集和性能指标,也需要额外的全局知识和专业技能。

例如,在一个预测肺炎患者护理优先级的模型中,哮喘患者实际上有更高的医疗风险,但模型却将他们定义为死于肺炎的风险较低。事后人为解释指出,有哮喘病史的患者会自动接受更积极的治疗,因此与其他患者相比,他们的医疗风险确实较低。这反映了需要针对特定领域进行训练,通过正则化惩罚等方式,使模型的解释与领域知识相匹配。

常见的做法是使用简单的模型,如线性回归或决策树作为替代模型,这样不仅可以提高模型的可解释性,还能增强鲁棒性并便于整合领域知识。

2.2 应对模型的不稳定性

人类倾向于进行反事实思考,信任意味着安全感和可靠性。如果预测模型容易出现明显错误,就无法实现信任。一些方法,如 DeepFool 或单像素攻击,表明许多知名的 DNN 架构对输入图像的小扰动不稳定。深度对抗攻击和防御技术引起了越来越多的关注,也引发了对 DNN 系统在临床环境中部署的巨大担忧。

以下是确保模型安全性和鲁棒性的一些关键要点总结:
|要点|说明|
| ---- | ---- |
|增强泛化能力|增加样本数据或采用启发式数据增强方案|
|匹配领域知识|通过正则化惩罚等方式使模型解释与领域知识一致|
|使用替代模型|如线性回归或决策树|
|应对不稳定性|关注深度对抗攻击和防御技术|

2.3 模型稳定性分析流程

graph LR
    A[输入模型和数据] --> B[进行小扰动测试]
    B --> C{模型是否稳定}
    C -- 是 --> D[模型可接受]
    C -- 否 --> E[分析不稳定原因]
    E --> F[采取改进措施]
    F --> B

3. 利用类激活图(CAM)研究阿尔茨海默病

在使用基于人工智能的软件之前,医疗从业者首先会问:“我们能信任人工智能模型做出的决策吗?” 可解释性对于信任人工智能至关重要,而类激活图(Class Activation Map,CAM)是一种标准的模型解释技术,已广泛应用于医学领域,用于解释深度模型的决策。

3.1 CAM 在阿尔茨海默病诊断中的应用

CAM 可以解释为 “深度卷积神经网络(CNN)关注的位置”,即空间组织数据中对于区分阿尔茨海默病(AD)患者和正常对照(NC)受试者最重要的区域。近年来,针对不同的医学成像模态,如正电子发射断层扫描(PET)和结构磁共振成像(MRI),已经提出了几种基于 CAM 的 AD 诊断方法。

例如,在一项研究中,作者提出了一个具有残差连接的 3D CNN 用于 AD 检测。该 CNN 为氟代脱氧葡萄糖(FDG) - PET 图像生成类激活图。生成的 CAM 清楚地突出了后扣带回皮质(PCC)区域,这与之前的临床研究一致,这些研究证实了这些大脑区域对 AD 诊断的鉴别能力。

3.2 磁共振波谱(MRS)与 AD 检测

磁共振波谱(Magnetic Resonance Spectroscopy,MRS)是另一种有前景的 AD 脑代谢研究技术。它可以安全、无创地检测大脑中的微小代谢变化,提供 “虚拟活检”。最近,1D CNN 已用于 MRS 代谢物定量和去除伪影。

在 AD 检测方面,MRS - 基于的检测即使在临床综合征(如认知障碍)不明显时也可能成功,而结构 MRI 或 FDG - PET 图像可能无法检测到有 AD 风险的患者。

3.3 DeepMRS 模型

最近提出的 DeepMRS 模型使用 MRS 数据进行 AD 检测。该模型使用来自普瓦捷大学医院的 135 名受试者的数据进行训练,在早期 AD 患者与 NC 受试者的分类中,获得了 94.74% 的曲线下面积(AUC)分数、100% 的灵敏度和 89.47% 的特异度,显示出比使用结构 MRI 更有前景的早期痴呆检测性能。

从 DeepMRS 的超参数生成的 CAM 可以提供关键信息,突出信号中与区分 AD 和 NC 相关的代谢物。对于输出类 c,其对应的 CAM 计算如下:
[CAM_{MRS}=\sum_{k = 1}^{K}Conv_{k}\cdot w_{k,c}]
其中,(Conv_{k}) 是全局平均池化层之前卷积层的第 k 个特征图,(w_{k,c}) 是与第 k 个特征图和类 c 相关的权重。

通过观察 CAM 可以发现,在 550 至 800 ppm 范围内的代谢物,如含胆碱化合物(Cho)、N - 乙酰天门冬氨酸(NAA)和肌酸(Cr),对区分 AD 和 NC 组最为重要,这与临床标准一致。同时,模型将信号噪声伪影(如 500 ppm 左右的水信号高峰)视为无关特征,通过在相应的 ppm 范围内赋予负值来体现。

以下是使用 CAM 研究 AD 的步骤总结:
1. 选择合适的医学成像模态(如 PET、MRI、MRS)。
2. 构建相应的 CNN 模型(如 3D CNN、DeepMRS 等)。
3. 训练模型并生成 CAM。
4. 分析 CAM 以确定对诊断重要的区域或代谢物。

4. 深度学习在乳腺癌识别中的应用

4.1 乳腺癌的描述

乳腺癌主要有两种类型的病变:微钙化和肿块。这里主要关注乳腺肿块,肿块是占据一定空间的重要不透明区域,在两个不同投照角度下可见。若仅在一个投照角度观察到,则称为不对称,直到确认其三维性质。

专家通常通过形状、轮廓和密度等特征来描述肿块,以确定其性质。以下是一些不同的乳腺癌描述方法及其效果:
|方法|描述|分类准确率|
| ---- | ---- | ---- |
|[BLB90]|使用基于模糊金字塔的多分辨率方法分割图像中的肿块,提取形状和纹理描述符,用于四级层次分类模型|85%(25 张图像数据集)|
|[REFDA97]|提出基于矩的形状描述符,根据肿块轮廓像素密度表征感兴趣区域与肿块的过渡|94.9%|
|[GRCS07]|基于肿块轮廓的多边形模型描述肿块,保留毛刺和重要诊断细节,提取毛刺描述符|94%|
|[NR12]|使用 Krawtchouk 矩作为输入,用于 kNN 分类器,并与 Zernike 矩进行比较|Krawtchouk 矩 93%,Zernike 矩 85%|
|[KDM12]|提出三种形态描述符:骨骼端点(SEP)、突起选择(PS)和毛刺状肿块描述符(SMD)|SEP 92%,PS 93%,SMD 97%|

4.2 深度学习与乳腺癌数据库

4.2.1 深度学习架构

卷积神经网络(CNNs)是深度学习中非常出色的方法,能够在数百万图像的大型数据集上表现出高泛化能力。其特殊的架构考虑了计算机视觉领域中二维图像的特定拓扑结构,通过限制隐藏单元的感受野来关注局部变化,从而学习局部连接方案。随着卷积层的堆叠,网络能够学习更抽象、更具判别性的高级表示。

在乳腺癌识别中,由于乳腺摄影数据集规模较小,选择预训练的 CNN(如 AlexNet)进行无监督特征提取是更合适的选择。AlexNet 是第一个现代 CNN 模型,其组成和工作方式如下:
1. 图像预处理 :对图像进行平移和水平翻转,随机提取 224×224 大小的图像块作为学习数据库,并通过向图像主成分添加噪声来改变 RGB 颜色通道的强度,以确保对光照和颜色的不变性。
2. 网络层结构 :包含八个层,其中五个卷积层和三个全连接(FC)层。第一和第二个卷积层后接归一化和最大池化层,最后三个卷积层相互连接,无归一化和池化操作。
3. 激活函数和技巧 :使用 ReLU 激活函数,显著减少训练时间;采用局部标准化,便于泛化;使用重叠子采样技术,降低学习误差率。

在乳腺癌识别中,采用三层决策方法:
1. 第一步 :将 AlexNet 应用于感兴趣区域(ROIs),无监督地提取可用于决策的高级描述符。
2. 第二步 :将 AlexNet 应用于分割后的图像,提取与学习数据库中不同肿块相关的形状和轮廓描述符。
3. 第三步 :使用 AlexNet 的第二个全连接层(FC7,包含 4096 个神经元)作为描述符层,将这些描述符输入到支持向量机(SVM)分类器中构建学习模型,用于分类和识别肿块为良性或恶性,为决策提供支持。

对于毛刺,鉴于其形状、密度和类型的随机性,让放射科医生判断其在决策中的相关性。通过分割可以帮助放射科医生关注真正的感兴趣结构,消除可能造成混淆的因素。

4.2.2 乳腺癌数据库

为了建立乳腺肿块分类器,使用了一个数据集,并将其分为三个不同的分区:
|分区|作用|
| ---- | ---- |
|DBtrain|用于训练模型以调整参数|
|DBvalid|用于选择超参数|
|DBtest|用于测试模型性能|

4.3 乳腺癌识别流程

graph LR
    A[获取乳腺图像] --> B[图像预处理]
    B --> C[分割图像]
    C --> D[应用 AlexNet 到 ROIs]
    D --> E[提取高级描述符]
    C --> F[应用 AlexNet 到分割后图像]
    F --> G[提取形状和轮廓描述符]
    E --> H[使用 FC7 作为描述符层]
    G --> H
    H --> I[SVM 分类器训练]
    I --> J[分类肿块为良性或恶性]
    J --> K[放射科医生确认或否定诊断]

综上所述,可解释人工智能在医学影像领域具有重要的应用价值。在高级别胶质瘤预测、阿尔茨海默病诊断和乳腺癌识别等方面,通过合适的模型和技术(如 CAM、CNN 等),可以提高诊断的准确性和可解释性,为医疗决策提供有力支持。同时,确保模型的安全性和鲁棒性,使其决策依据与领域知识相匹配,是推动人工智能在医学领域广泛应用的关键。

相关推荐

胸片AI诊断新冠:医学影像落地的工程实践

医学影像AI的核心挑战在于如何让深度学习模型从像素中理解临床语义,而非依赖数据捷径。其原理需融合X射线物理成像规律、解剖结构先验与放射科决策逻辑;技术价值体现在跨设备泛化能力、可解释性保障与临床工作流嵌入;典型应用场景包括基层医院新冠初筛、PACS系统实时辅助及DRG分组支持。本文以真实部署项目为蓝本,详解特征解耦架构、设备指纹归一化、决策链标注等关键技术路径,揭示医学AI从实验室指标走向临床信任的关键跃迁。

weixin_29032489的博客 345

数字图像处理——直方图均衡化在医学影像中的应用

本文探讨了直方图均衡化在医学影像增强中的核心应用。作为数字图像处理的关键技术,它能有效提升X光、CT等影像的对比度,使骨骼纹理、软组织细节更清晰,辅助医生诊断。文章详细解析了其原理,并提供了Python实战代码,同时讨论了在医学场景中面临的噪声放大挑战及CLAHE等优化方案。

weixin_29063681的博客 356

看Kubernetes v1.31 如何解决大模型镜像大的问题? ImageVolume深度解析与应用实践

在镜像下载完成后,kubelet 并不会像处理普通容器镜像那样将其展开并运行容器进程,而是将镜像的文件系统以只读的方式挂载到 Pod 容器内指定的挂载点。容器运行时负责为容器创建一个隔离的文件系统视图,并将 ImageVolume 对应的镜像文件系统挂载到指定的路径下,使得容器内的应用程序能够像访问本地文件系统一样访问镜像中的 artifacts。在 Pod 启动过程中,Kubernetes 会自动处理该镜像的拉取(如果本地不存在)和挂载操作,将镜像中的内容以只读的方式挂载到容器内指定的目录路径下。

进击的Blazor 1522

31、医学影像中的可解释人工智能:知识的重要性

本文探讨了可解释人工智能在医学影像领域的应用与挑战。重点分析了其在高级别胶质瘤预测、阿尔茨海默病研究和乳腺癌识别中的关键技术与成果,例如利用LRP-Epsilon和Deep Taylor显著性图、类激活图(CAM)和DeepMRS模型,以及AlexNet与SVM分类器的结合。同时讨论了人工智能模型的安全性、鲁棒性、数据限制等问题,并展望了未来发展方向,包括加强模型可解释性、数据扩充、多模态融合及跨学科合作,以推动人工智能在临床诊断中的可靠应用。

q9r0s的博客 67

33、脑肿瘤检测与图像分类技术:深度学习与可解释AI的应用

本研究探讨了深度学习和可解释人工智能(XAI)在脑肿瘤检测中的应用,重点分析了多种深度学习模型(如EfficientNet、ResNet 50、InceptionV3等)的性能,并引入Grad CAM和Grad CAM++等XAI技术增强模型预测的可解释性。通过实验验证,EfficientNet模型在脑肿瘤分类中表现出高达99.16%的准确率,并结合XAI技术提高了医生对模型决策的信任。研究还讨论了实验优化策略、XAI的定量评估及未来发展方向,旨在为脑肿瘤的临床诊断提供更可靠的技术支持。

uu89012的博客 71

27、AI在疾病诊断中的应用与挑战

本文探讨了人工智能在疾病诊断中的应用潜力与面临的挑战。从深度学习的局限性、数据需求到‘黑盒’问题,分析了AI在医学领域落地的技术与伦理难题。通过对比不同分类器和迁移学习模型的性能,展示了AI在胸部X射线图像中诊断COVID-19等疾病的可行性与优势。文章还展望了AI在未来诊断服务中的定位,强调其作为辅助工具提升医疗质量的前景,并提出需在数据、模型、教育和临床应用方面协同推进,以实现AI在医疗领域的安全、有效融合。

x1y2z的博客 76

【飞控】UAV Toolbox Support Package for PX4 Autopilots安装与配置

安装配置UAV Toolbox Support Package for PX4 Autopilots硬件安装包

m0_58373406的博客 1613

PCL1.12.1+VTK9.1+Qt5.14.2实战:解决QVTKOpenGLNativeWidget点云渲染窗口初始化报错问题

本文针对PCL1.12.1、VTK9.1与Qt5.14.2集成开发中,QVTKOpenGLNativeWidget点云渲染窗口初始化时出现的报错与黑屏问题,提供了深度分析与两种实战解决方案。核心在于理解VTK版本升级导致的渲染窗口类型不匹配,并指导开发者通过显式创建vtkGenericOpenGLRenderWindow或利用窗口ID嵌入,正确初始化并绑定可视化组件,从而稳定实现点云渲染。

weixin_29284657的博客 221

osgearth添加经纬度网格,并显示鼠标所指经纬高度信息

一、代码 osgearth官方例子 #include <osg/Notify> #include <osgGA/StateSetManipulator> #include <osgViewer/Viewer> #include <osgViewer/ViewerEventHandlers> #include <osgEarth/MapNode> #include <osgEarthUtil/EarthManipulator> #

ljjjjjjjjjjj的博客 3564

K8S部署Java项目 pod的logs报错为:Error: Unable to access jarfile app.jar

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 2600

FPGA纯Verilog实现I²C主机控制器与EEPROM读写

I²C是一种广泛应用的同步串行总线协议,用于连接微控制器与EEPROM、传感器等低速外设。其核心原理包括开漏结构、主从通信机制、START/STOP时序及ACK/NACK应答流程。技术价值在于硬件资源占用少、布线简洁、支持多从机扩展,特别适合FPGA嵌入式系统中轻量级外设控制。典型应用场景涵盖工业数据存储、配置参数持久化及实时传感器接口。本文基于Xilinx Spartan-6 FPGA,采用纯Verilog HDL实现参数化I²C主机控制器与AT24C02 EEPROM读写验证,深入解析状态机设计、SDA

weixin_33557333的博客 119

yolov26改进 | Neck/颈部创新篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov26(全网独家创新)

本文提出了一种创新的分层特征融合模块HFFB(Hierarchical Feature Fusion Block)来改进YOLOv26的neck部分,构建了名为HFPN的新型特征金字塔网络。该模块通过三分支结构融合局部特征(CNN提取)、全局特征(Swin Transformer提取)和中间特征,并包含空间注意力(SA)、通道注意力(CA)和残差反向MLP(IRMLP)等组件来优化特征融合效果。实验表明,该方法能针对不同尺度目标(大/中/小)进行自适应检测,可根据具体数据集需求选择不同配置。文章详细提供了核

Snu77的博客 477

32、社交媒体大数据中的情感分析与网络欺凌检测

本文探讨了社交媒体大数据在情感分析和网络欺凌检测中的应用。情感分析有助于应对自动化带来的社会变化、促进社会包容和推动环境保护。网络欺凌作为一种严重的在线危害,其检测依赖于数据预处理、特征提取与深度学习模型(如CNN、LSTM)进行分类。文章还总结了大数据在欺诈检测、医疗、制造、交通等领域的广泛应用,并分析了数据存储、处理速度、质量和技术工具等方面的挑战,提出了相应的应对策略。未来,随着技术进步,社交媒体大数据将在更多领域发挥关键作用。

cc789的博客 90

深度学习工具包 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")

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 18、色彩科学:从分类到视觉的多面探索
下一篇: 21、音乐中可变节奏、动态及和声的处理与表示
study
博客等级 码龄27年 65粉丝 1642原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值