【Paraview】利用Tracer和Macro宏自动化重复性操作:从录制到执行的完整指南

【paraview】采用tracer和macro宏来记录paraview的操作过程用于重复性工作 录制宏的意义在于重复性工作,相当于记录了手动操作的步骤。 注意要点 录制tracer的paraview版本不能高于 读取的paraview版本,也就是向下兼容但是不能向上兼容(兼容问题可能出现但不一定出现,尽量采用同一个版本)。 录制的脚本语言是python 录制的操作可以选默认的第二项any *modified* properties,也可以选第三项,only-user*modified*properties。但是推荐选第三项,因为记录的操作更少,更不容易出问题。 基本步骤 1. 读取源数据 2. 点 阅读详情

1. 为什么你需要自动化你的Paraview操作?

如果你经常用Paraview处理数据,尤其是处理一批结构相似但数据不同的算例,那你一定对下面这个场景不陌生:打开数据、创建切片、设置等值面、调整颜色映射、添加计算器、导出图片或数据……一套流程下来,鼠标点来点去,菜单层层深入,十几分钟就过去了。处理一个文件还好,要是面对几十上百个文件,这种重复劳动不仅枯燥,还容易出错——万一哪一步点错了,或者参数设忘了,结果就得重来。

我自己在项目里就吃过这个亏。当时需要分析上百个不同工况下的流场数据,每个都要生成特定切面的涡量云图并计算平均动能。头几个我还兴致勃勃地手动操作,到第十个的时候已经开始怀疑人生,到第二十个的时候,一个手滑把颜色映射表设错了,前面十几个的图全得返工。那一刻我就下定决心,必须得找个“偷懒”的办法,把这一套操作固定下来,让电脑自己跑。

Paraview内置的 Tracer(跟踪器) 和 Macro(宏) 功能,就是为你我这样的“懒人”准备的终极神器。简单来说,Tracer就像一个屏幕录像机,但它录的不是画面,而是你在Paraview界面上的每一个操作步骤,并把它翻译成Python代码。Macro则是把这录下来的代码脚本保存起来,变成一个可以随时调用的“一键操作”按钮。下次遇到类似的数据,你只需要加载数据,点一下这个宏按钮,之前那套繁琐的操作就在几秒钟内自动完成了,又快又准。

这个功能特别适合科研人员和工程师。比如,你有一系列不同参数下的仿真结果,需要统一进行后处理并生成报告;或者,你需要定期处理实验数据,每次都执行相同的滤波、计算和可视化流程。掌握了Tracer和Macro,你就能从重复的鼠标点击中解放出来,把时间花在更有价值的分析和思考上。接下来,我就手把手带你从零开始,玩转这个自动化利器。

2. 开始之前:你必须知道的几个关键点

在兴奋地点击“开始录制”之前,有几个至关重要的注意事项必须搞清楚,这能帮你避开我当年踩过的很多坑。这些点看似琐碎,但直接关系到你录制的宏能不能用、好不好用。

第一个也是最重要的坑:版本兼容性问题。 Paraview的Tracer功能在录制和回放时,对版本有要求。官方文档可能不会大写加粗地提醒你,但无数前辈(包括我)的血泪教训是:录制宏的Paraview版本,最好与将来要运行这个宏的Paraview版本保持一致。 更保守的原则是“向下兼容”,即用新版本Paraview录制的宏,在旧版本上运行很可能出错;用旧版本录制的宏,在新版本上运行,成功率相对高一些,但也不绝对。这是因为不同版本的Paraview,其底层Python API、过滤器名称或属性可能会有细微变动。所以我的建议是,如果你的工作流需要在多台电脑或不同时间使用,尽量统一Paraview的版本号。我个人的习惯是,为一个长期项目固定一个Paraview的稳定版本(比如5.10.1),并在这个版本下开发和测试所有宏脚本。

第二个关键选择:录制时,到底该记录哪些操作? 当你启动Tracer后,会弹出一个选项对话框,这里面的选择直接影响生成脚本的复杂度和健壮性。通常你会看到三个选项:

  1. Record all properties(记录所有属性)
  2. Record any modified properties(记录任何被修改的属性)—— 这是默认选项。
  3. Record only user-modified properties(仅记录用户修改的属性)—— 我强烈推荐你选择这个!

为什么是第三个?我举个例子你就明白了。假设你只是把一个“Slice”过滤器的切面位置从X方向改成Y方向。如果选择“记录所有属性”,脚本会把你根本没动过的颜色、不透明度、点大小等几十个属性全部记录一遍,代码冗长且容易因为数据不同而出错。如果选择“仅记录用户修改的属性”,脚本就只生成一行改变切面方向的代码,干净利落。这样的宏通用性更强,因为它只包含了你主动进行的核心操作,剔除了大量无关的、可能随视图或数据变化的默认设置。代码越精简,在不同算例上复用时“翻车”的概率就越低。

第三个理解:Tracer录制的本质是Python脚本。 你不需要是Python高手也能用这个功能,但了解这一点很有帮助。Tracer把你图形界面的操作,实时转换成了调用Paraview Python API的命令。这意味着,你保存下来的.py宏文件,完全可以用文本编辑器打开、阅读甚至手动修改。这为你后期进行更高级的定制打开了大门。比如,你录制的宏里包含一个将数据缩放100倍的操作,后来你想改成缩放50倍,直接去脚本里改那个数字就行了,不需要重新录制。

3. 五步上手:录制你的第一个自动化宏

理论说再多不如动手试一次。我们用一个典型的后处理流程为例,带你完整走一遍录制和使用的过程。假设我们有一组CFD计算得到的.vtu文件,我们需要为每个文件:1) 创建一个Z方向的切片;2) 计算一个自定义的涡量值;3) 用“Rainbow”色图显示结果。

3.1 第一步:加载你的源数据

打开Paraview,通过 File -> Open 菜单加载你的数据文件。这里我们加载第一个算例文件,比如 case_001.vtu。数据加载后,它会在“Pipeline Browser”中显示为一个节点。确保这个数据节点处于选中状态(高亮显示),因为我们接下来的所有操作都是基于它进行的。这一步是录制的起点,Tracer会记录“从哪个数据源开始操作”这个关键信息。

3.2 第二步:启动Tracer,开始录制

现在,来到菜单栏,点击 Tools -> Start Trace。这时会弹出我们之前提到的选项对话框。按照我的建议,在“Trace Options”里,选择 “only user-modified properties”。其他设置可以先保持默认,直接点击“OK”。你会注意到Paraview界面似乎没什么变化,但在状态栏或某个角落,可能会有一个小小的提示,表明录制已经开始了。从现在起,你在Paraview里做的每一个有效操作,都会被悄悄转换成代码。

3.3 第三步:执行你想要自动化的操作

这是核心步骤,就像你平时手动操作一样,但请尽量操作得清晰、准确。

  1. 创建切片:在工具栏点击“Slice”过滤器图标,或者从 Filters -> Alphabetical -> Slice 添加。在切片属性面板中,将“Plane”从默认的“X Normal”改为“Z Normal”。这就是一个“用户修改的属性”,会被Tracer记录下来。其他如原点位置,如果你没动,就不会被记录。
  2. 添加计算器:在Pipeline Browser中选中刚刚生成的“Slice1”。然后点击“Calculator”过滤器。在计算器属性面板的“Expression”输入框里,输入我们的涡量计算公式,例如 Vorticity_Z(假设你的数据里有这个变量)。或者更复杂的自定义公式,比如 Velocity_X*Gradient_X。给计算结果起个名字,比如 MyVorticity,然后点击“Apply”。这个设置表达式和结果名称的操作,又会被忠实记录。
  3. 调整可视化:在“Color Map Editor”里,将色表从默认的“Blue to Red”拖拽选择为“Rainbow”。这也是一个修改操作。
  4. (可选)调整视图:如果你希望每次宏运行时都自动调整到某个视角,比如等轴视图,那么现在用鼠标旋转模型到满意角度,然后点击视图工具栏的“Reset Camera”或“Isometric View”按钮。这个视图操作也会被记录。

操作过程中,你可以随时在Pipeline Browser里切换选中不同的过滤器,Tracer会跟踪当前活动对象。完成所有操作后,你的可视化窗口应该已经显示出处理后的结果。

3.4 第四步:停止录制并保存宏

所有操作完成后,点击 Tools -> Stop Trace。此时,一个包含所有操作代码的脚本编辑器窗口会弹出来。你可以快速浏览一下生成的代码,应该能看到类似 SetActiveSource、Slice、Calculator、RenameSource、GetColorTransferFunction、SetColorMap 这样的函数调用。

接下来是关键:保存这个脚本。点击脚本编辑器窗口的 File -> Save As。我建议你保存到两个地方:

  1. Paraview的宏目录:这是最方便的位置。Paraview有一个专门的用户宏目录,通常路径像 C:\Users\[你的用户名]\AppData\Roaming\ParaView\Macros(Windows)或 ~/Library/Application Support/ParaView/Macros(Mac)。当你把 .py 文件保存到这里,它下次启动时会自动加载,并出现在 Macros 菜单下。
  2. 你的项目工作目录:同时另存一份到你的项目文件夹里,方便版本管理和分享给同事。

保存时,给宏起一个见名知意的名字,比如 create_zslice_and_vorticity.py。点击保存后,这个宏文件就创建好了。

3.5 第五步:在新数据上使用宏,见证奇迹

现在我们来测试宏的复用性。首先,清理一下现场:点击 View -> Reset Session,或者直接关闭Paraview再重新打开,确保一个干净的环境。

  1. 加载新数据:打开一个新的、结构相似但数据不同的算例文件,比如 case_002.vtu。
  2. 调用宏:在菜单栏点击 Macros,你应该能在下拉列表里找到你刚才保存的宏脚本名称(例如 create_zslice_and_vorticity)。点击它。
  3. 等待执行:Paraview会弹出一个进度条,然后你会看到软件界面开始“自动操作”:Pipeline Browser里自动生成了Slice和Calculator节点,视图窗口中的切片自动出现,并且颜色映射已经变成了Rainbow。整个过程在几秒内完成,和你之前手动操作十几分钟的效果一模一样!

第一次成功运行自己录制的宏,那种解放双手的愉悦感是非常真实的。这意味着,之后剩下的98个算例,你只需要写一个简单的循环脚本(或者甚至手动点98次宏),就能批量产出所有结果图。

4. 深入宏脚本:读懂并优化你的自动化代码

仅仅会录制和播放还不够。要想真正驾驭自动化,你得能看懂并微调Tracer生成的脚本。我们打开刚才保存的 .py 文件,看看里面到底有什么。

你会看到脚本开头通常有一些导入语句,然后是 def main() 函数,你的所有操作代码都封装在这个函数里。代码的结构非常直观,基本就是一系列顺序执行的命令。

# 示例代码片段,非完整脚本
from paraview.simple import *

def main():
    # 1. 获取当前活动的数据源(即我们加载的case_002.vtu)
    case_002vtu = GetActiveSource()

    # 2. 创建切片,并设置其平面方向为Z
    slice1 = Slice(Input=case_002vtu)
    slice1.SliceType.Normal = [0.0, 0.0, 1.0]  # 这就是我们改的Z方向
    RenameSource('MySlice', slice1)

    # 3. 在切片上创建计算器
    calculator1 = Calculator(Input=slice1)
    calculator1.ResultArrayName = 'MyVorticity'
    calculator1.Function = 'Vorticity_Z'  # 这里就是我们输入的计算公式
    RenameSource('MyVorticityCalc', calculator1)

    # 4. 设置颜色映射
    vorticityLUT = GetColorTransferFunction('MyVorticity')
    vorticityLUT.ApplyPreset('Rainbow', True)

    # 5. 更新视图并重置相机
    Render()
    ResetCamera()

从代码里我们能学到什么?

  • 每个操作都是一个函数调用:Slice(), Calculator() 这些就是Paraview Python API的过滤器创建函数。
  • 属性赋值对应界面修改:slice1.SliceType.Normal = [0.0, 0.0, 1.0] 这行,直接对应我们在属性面板下拉菜单里选择“Z Normal”。如果你想改成Y方向切片,把列表改成 [0.0, 1.0, 0.0] 就行了,不用重录。
  • 计算器公式是字符串:calculator1.Function = 'Vorticity_Z'。这里就是我们可以大做文章的地方。如果公式需要根据文件名变化呢?比如,我们想计算 Pressure_ 加上一个后缀。这时,我们可以手动编辑脚本,把固定字符串替换成变量。例如,先提取文件名,再拼接公式字符串。这就从“静态录制”升级到了“动态脚本”。

手动优化脚本的一个实用技巧:删除冗余代码。 Tracer有时会记录一些与核心逻辑无关的UI状态代码,比如某个面板的展开状态、某个临时选择的取消。这些代码在回放时可能无关紧要,甚至可能因界面布局不同导致警告。你可以仔细阅读脚本,把那些明显不是你自己操作的、关于 Show、Hide、SetDisplayProperties 且不影响最终结果的代码行注释掉或删除,让脚本更加清爽健壮。

5. 超越基础:高级技巧与实战场景

掌握了基本流程后,我们可以玩点更花的,让自动化能力再上一个台阶。

场景一:批量处理整个文件夹的文件。 录制好的宏一次只能处理一个激活的数据源。要处理上百个文件,我们还需要一个“驱动脚本”。这个脚本可以用Python单独写,其逻辑是:

  1. 列出目标文件夹下所有的 .vtu 文件。
  2. 循环遍历每个文件:用Paraview的 OpenDataFile 加载它;然后调用我们录制好的那个宏函数(需要将宏函数定义导入);最后将结果图片或数据保存到指定位置。
  3. 你甚至可以让这个脚本在后台启动Paraview(使用 pvpython,Paraview的无界面Python版本)来运行,完全不打开图形界面,效率极高。

场景二:制作带参数的宏。 有时我们不想把一切写死。比如,切片的位置、计算器的公式可能需要微调。Paraview支持创建带用户界面的宏。你可以编辑宏脚本,使用 paraview.util 中的控件函数,在宏运行时弹出一个对话框,让用户输入切片位置、公式字符串等参数。这样,一个宏就变成了一个灵活的工具,而不是死板的流程。虽然这需要更多Python和Qt的知识,但学习曲线是值得的。

场景三:组合与嵌套宏。 复杂的后处理流程可能包含多个阶段。你可以分别为每个阶段录制宏,比如“宏A:数据裁剪与子域提取”,“宏B:计算时均流场”,“宏C:生成涡量等值面图”。然后,你可以写一个“总控”脚本,按顺序调用这三个宏。这种模块化的思想,让自动化脚本易于维护和复用。某个阶段算法改了,只需要重录或修改对应的那个小宏即可。

我踩过的一个坑:数据命名依赖。 早期我录制宏时,在计算器里直接引用了数据中一个叫 Velocity 的数组。后来处理另一组数据,数组名是 U,宏运行就报错了。所以,在录制涉及特定数据字段名的操作时,要么确保所有数据字段名统一;要么在脚本里加入一些健壮性判断,比如先用 GetArrayNames() 函数检查一下数据里有哪些数组,再做操作。或者,更简单的方法,在录制前,先使用“Rename Array”过滤器把不同数据源里的同名物理量统一成一样的名字(如都把速度场改名为Velocity),这样录制的宏通用性就大大增强了。

从机械的点鼠标,到优雅地点一下宏按钮,再到编写驱动脚本实现全自动批处理,这不仅是效率的提升,更是工作思维的转变。Paraview的Tracer和Macro功能,为你架起了从交互式探索到程序化生产的桥梁。花一点时间学习和设置,它回报给你的是成倍的时间和对过程的可控性。下次当你面对一堆相似的数据文件时,别再犹豫,打开Tracer,把你的经验固化成代码,让电脑去执行那些重复劳动吧。

银河麒麟操作系统DEB包自动化追加域名到hosts文件实战 postinst文件是 DEB 包中的一个维护者脚本,它的核心作用是:在软件包的文件被解压到系统之后,执行必要的配置或收尾工作。1.主要作用根据 Debian 官方文档,postinst通常用于完成软件包解压后的配置任务。执行配置:完成软件安装后的环境搭建,例如创建必要的目录、修改文件权限或更新配置文件。管理服务:启动或重新启动与该软件包相关的系统服务,使其立即可用。用户交互:有时会向用户询问配置信息,或提示用户若接受默认值,后续可能需要手动重新配置。注册替代项:调用。 阅读详情

相关推荐

本地如何安装midscene.js运行环境

手把手教你本地安装midscene.js运行环境

实践助梦想成长 2602

【Paraview】利用Tracer和Macro宏自动化重复性可视化操作

本文详细介绍了如何利用Paraview中的Tracer(跟踪器)和Macro(宏)功能,将繁琐的手动可视化操作自动化。通过录制用户操作并生成Python脚本,可实现流程的快速复现与批处理,显著提升CFD及科学计算数据后处理的效率与一致性。文章包含从录制、保存到在不同数据上应用宏的完整实战指南。

win55的博客 970

UE4初学笔记_02_编辑器界面

不同版本可能不一样,这里是4.25 UE4编辑器主界面(也称为关卡编辑器)主要用于构建世界场景和关卡以及放置资源。 1.菜单栏 2.关卡编辑器(Level Editor)工具栏 3.“模式”(Modes)面板 4.“内容浏览器”(Content Browser)面板 5.“视口”(Viewport)面板 6.“世界大纲视图”(World Outliner)面板 7.“细节”(Details)面板 1.菜单栏 菜单栏包含“文件”(File) 、“编辑”(Edit) 、“窗口”(Win.

来自火星的猫 3090

巨益及核标杆案例|高端羽绒服饰品牌:账单自动化与智能核销实现T-1实时对账

核销失败自动标记时间、金额、退款、平台规则、促销活动五类异常原因,生成差异调整单,审核后自动进入下一轮核销,差异处理30天内闭环。本次服务的标杆企业为高端羽绒服饰品牌,电商渠道覆盖天猫、抖音、京东、拼多多、得物、视频号、唯品会、快手八大主流平台,多店铺、多主体运营,日均订单量级大、月度GMV持续增长,财务核算与对账工作量巨大。跨平台对账完全依赖Excel逐笔核对,促销活动、优惠券、平台补贴导致订单金额与平台结算金额差异频发,需人工逐笔排查,容易遗漏或重复核销,月度对账周期长达15-20天。

193

ADS2023实战:2.4GHz超外差接收机从设计到链路预算全流程解析

本文以ADS 2023软件为平台,详细解析了2.4GHz超外差接收机从核心指标定义、架构原理到完整链路搭建与仿真的全流程。通过实战演练,重点阐述了如何利用ADS进行谐波平衡仿真和链路预算分析,以量化评估系统增益、噪声系数等关键性能,为射频工程师提供了一套从理论到仿真的系统级设计方法。

herb5的博客 808

头歌 操作系统 课堂练习2.1:外部中断 第2关:第一次时钟中断

将答案0x796c输入到workspace/mushixun/恢复点的地址.txt中的括号里即可,随后使用kill命令防止对第三关的环境造成影响。

Yinfrey的博客 6049

安全超自动化如何提升防御体系可靠性?

企业安全防御的可靠性不在于设备堆叠,而在于“发现—分析—处置”链路的闭环能力。当前安全体系面临告警淹没、产品孤岛、响应依赖人工三大断点,导致效率低下、误判频发。通过超自动化平台实现告警全流程自动处置、多设备联动集成、剧本化标准化响应,可将响应时间从几十分钟缩短至秒级,降低人为失误,提升可量化、可复现的可靠性。真正的安全可靠,是机器稳定执行与人关键判断的协同——让防御体系从“靠人扛”走向“机械般可靠”。

m0_74389308的博客 228

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

6.10华为OD机试真题 新系统 - 查找温度记录统计信息 (Java/Py/C/C++/Js/Go)

算法大师! 421

AI for Testing 提效实战 · 执行自动化(六):轻量 Mock 编排实战——WireMock 手工落地 + AI 加速

(用的就是方式 A 给过的那句官方提示词)。拿不到代码就找接口负责人确认。HAR 里混着埋点、心跳、鉴权刷新,让 AI 先清洗。

qq_37940081的博客 294

34、高效探索柔性蛋白质环构象空间的算法

本文介绍了一种高效探索柔性蛋白质环构象空间的算法,通过种子采样和变形采样两种技术,同时满足运动学闭合和避免空间位阻冲突的约束条件。种子采样能够在闭合无冲突构象空间中广泛生成构象,而变形采样则可以对“有趣”区域进行更密集的探索。实验结果表明,这两种方法在不同大小和受限程度的蛋白质环上均表现出色,运行时间在可接受范围内。相关算法已集成到工具包LoopTK中,可在https://simtk.org/home/looptk获取。

moon9的博客 125

3D高斯压缩黑科技开源!1GB场景压到42MB,Web3D迎来“WebP时刻”——SOG格式深度解析

Web3D迎来革命性突破!PlayCanvas开源全新3D高斯泼溅压缩格式SOG,将1GB场景压缩至仅42MB,体积缩小95%,加载速度提升10倍+。SOG通过将3D数据编码为WebP纹理+元数据,实现GPU零拷贝实时渲染,完美兼容WebGL/WebGPU。实测显示,4百万高斯点的场景在手机上1.5秒内完成加载,内存占用降低83%。这一技术突破为电商展示、虚拟旅游、工业设计等领域带来新机遇,开发者可通过开源工具链快速集成。SOG被誉为"3D界的WebP",有望成为下一代3D互联网的基础设

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 853

更高精度、更高效率、更强自动化,灵途科技以光电技术拓展工业检测应用可能

在具身智能、智能家电、智慧城市、智能测绘等领域,灵途持续贴近行业应用与客户需求,积累不同场景下的应用经验,并依托多元化的光电器件储备与创新实验室,灵活响应客户需求,推动光电技术与实际应用相结合。光学检测通过光的发射、反射、透射与接收等过程获取检测信号,结合不同的光源、成像方式与测量原理,以及图像处理和自动化设备,可实现对工件外观、尺寸、位置及表面轮廓等信息的识别与测量,满足多种工业检测需求。未来,灵途将继续围绕具体检测需求,探索光电器件与光学技术在更多工业场景中的应用,助力工业检测能力持续升级。

Lingtukeji的博客 205

《PCI Express体系结构导读1》-- PCI简介

请先阅读完一遍此书再来看文章哦,这样效率更高~

HoneyIC的博客 146

Entra条件访问实战:零信任策略自动化与设备合规联动指南

本文详解如何使用Microsoft Entra ID条件访问构建零信任安全体系。涵盖设备合规信号集成、动态风险策略、特权访问工作流及与Intune/DSC协同模式,助您实现身份驱动的动态访问控制。立即查看!

Helix250的博客 312

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Claude Code + GitHub 自动化工作流整理

先实现本地从需求开发到 PR 创建的闭环,再扩展到 GitHub 上的自动化。自动化 → GitHub Actions → 安全与维护。推荐顺序: 基础配置 → 分支与开发 →。

大道之行,始于足下 194

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

数据准备工具进入自动化时代:7款产品的实际使用场景与选择建议

数据分析有一条被反复验证的规律:真正花在「分析」上的时间,往往不到整个项目的一半。剩下的大半时间,都耗在了「数据准备」上——找数据、对口径、清洗脏数据、合并多张表、把字段改成能用的格式。这个环节过去靠 Excel 手工操作和 SQL 脚本硬扛,慢、容易出错、还不可复用。但 2026 年的数据准备,正在从「手工活」变成「自动化流水线」。推动这个变化的,是三股力量:数据量越来越大(手工根本洗不过来)、分析需求越来越实时(T+1 的清洗节奏跟不上)、以及工具本身越来越智能(低代码、可视化、自动推荐清洗规则)。

Leo的博客 17

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

3个模块搭稳一条自动化链路:定时任务、幂等与对账

长流程自动化易中断,核心痛点是进程崩溃后进度清零。解法在于引入“存档点”机制:将任务拆解为小段,每段结束时将状态持久化至磁盘。通过授权模块管理令牌生命周期、定时任务内置重试与告警、跨应用数据流实现幂等与双向对账,确保断点续跑可恢复。关键在每步落档,上下文自维护,即使进程死亡也能接续执行。真正实现“任务能断点续跑,长流程才敢放手”。

hzxxxz的博客 192

2026年医疗行业数据分类分级产品排名:自动化、定制化与业务赋能深度解析

在业务赋能方面,全知科技的策略闭环能力强,能够将分类分级结果与下游的数据权限控制、数据脱敏、安全审计等系统无缝集成,形成从识别到管控的完整管理闭环,为医疗机构的临床科研、数据共享、业务协同等场景提供安全支撑。全知科技入选Gartner《中国数据分类分级市场指南》代表厂商,在金融、运营商、医疗、教育等多个行业均有出色表现,其医疗行业解决方案继承了这一跨行业经验积累,能够为不同规模的医疗机构提供自动化、定制化、业务赋能强的分类分级能力。智能化、平台化、场景化正成为数据分类分级产品的三大演进方向。

m0_71567443的博客 424

当“版权主张”不再需要人类:从 Luanti 被下架看自动化维权的工程化风险

当版权投诉不再需要人类阅读代码,开源项目该如何自证清白?😱 本文从 Luanti 被下架事件切入,揭示自动化维权的工程化风险,并给出三条可落地的“可自证”方案:可复现构建、机器可读许可证清单、CI 合规闸门。读完后你将明白:在机器对机器的维权时代,让事实可被验证,才是开源项目最硬的护城河。

2601_94912102的博客 463

从人工目检到AI视觉:智能座舱瞬态故障的自动化捕获与溯源

东舟“黑花闪冻”自动化测试系统通过AI视觉捕获与多源时间对齐技术,攻克智能座舱瞬态闪屏、花屏、黑屏、冻屏等难题。系统采用高速相机结合训练有素的AI模型,精准识别毫秒级显示缺陷;机械臂模拟真实触控操作,配合故障注入(电源波动、总线干扰、温湿度冲击等),主动诱发问题;并通过视频、触控、电源、CAN总线、日志等数据时间对齐,实现根因一键定位。相比传统人工测试,显著提升复现率、准确率与效率,推动测试从“经验判断”迈向“数据驱动”,为智能座舱质量保障提供可靠工程化方案。

东舟技术的博客 149

【Linux修炼】包管理器yum/apt、编辑器Vim、编译器gcc/g++、自动化编译makefile、版本控制器Git、调试器GDB/CGDB

Linux软件安装推荐使用包管理器(如yum、apt),可自动解决依赖与版本兼容问题,避免手动安装的复杂性。安装本质是将软件拷贝至系统指定目录,需root权限。包管理器相当于“应用商店”,通过社区镜像源下载并管理软件,国内用户可通过切换镜像源提升下载速度。配合vim编辑器、gcc编译器、make构建工具及gdb调试器,可高效完成开发全流程。

Meanlong_的博客 147

自动化流水线的“最后一公里“:任务监听与报告通知服务

一个自动化流水线的任务监听与报告通知服务介绍

weixin_43874274的博客 243

Java金融后端转LLM应用开发 Day8:团队搭建、跨行业自动化潜力与AI风险认知全指南

本文基于吴恩达《Generative AI for Everyone》课程第24构建生成式AI软件的团队,25跨行业的自动化潜力;26对AI的担忧。系统讲解生成式 AI 项目的团队搭建方法、跨行业自动化影响规律,以及大众对 AI 核心担忧的理性辨析。内容覆盖从单人验证到规模化落地的弹性团队配置逻辑,结合权威研究拆解薪资、职能、行业三维度的 AI 影响差异,逐一回应偏见放大、失业冲击、生存风险三类核心焦虑。全文配套金融开发场景实例与新人疑问解答,帮助读者建立从落地执行到职业认知的完整体系。

阿昊的博客 289

【IEEE出版,快至会后3-4个月检索 | 北方民族大学主办 | 中国·银川(线上+线下)】2026年机器人、智能计算与自动化学术会议(RAIC 2026)

2026年机器人、智能计算与自动化学术会议(RAIC 2026)旨在汇聚来自全球的教授、研究人员、学者及行业实践者。RAIC 2026 提供了一个国际性论坛,用于展示和交流机器人、自动化及智能计算领域的最新研究进展、创新技术及实际应用成果。会议聚焦于智能机器人、自主系统、数据驱动的自动化以及智能控制等主题,同时鼓励开展涵盖信息物理系统、以人为中心的系统及计算智能等方向的跨学科研究。4、听众参会:不投稿仅参会,也可申请口头报告或海报展示。↑↑论文投稿/参会报名/了解会议详情↑↑。◆ 会议只接收英文稿件;

weixin_73242859的博客 185

快递单号批量查询Python脚本:从手动到自动化的完整实现

latest_trace = traces[0]["AcceptStation"] if traces else "无物流信息""reason": result.get("Reason", "查询失败")"RequestType": "8001", # 即时查询。"最新物流": result["reason"],"快递单号": logistic_code,"状态": result["state"],"快递单号": logistic_code,api = KdNiaoAPI("你的ID", "你的Key")

meiying8838的博客 156

AI 自动化逆向(三十五)假设空间枚举的完备性是假设出来的

本文揭示了自动化逆向中枚举法的深层陷阱:所谓“完备枚举”实则依赖人为假设的变体表,其边界受限于分析者的想象力。两万两千种配置全灭,并非密码算法异常,而是因遗漏“双反馈链接层”等非标准设计。核心教训在于:枚举前应先读代码、构造性配对输入、以“重算=截获”为判据,并将“表的完备性”作为首要怀疑对象。真正的突破不靠更狠枚举,而在于换认识论——别试了,去读。

虎鲸不是鱼 148
上一篇: QML与QCefView混合开发实战:从零构建嵌入式浏览器Demo
下一篇: 基于Keil5虚拟示波器与SaleaeLogic16的嵌入式系统波形仿真与协议解析实战
html8
博客等级 码龄8年 105粉丝 1092原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值