易车 × Apache Doris:构建湖仓一体新架构,加速 AI 业务融合实践

多维聚合实战:从OLAP立方体到交互式下钻分析 多维聚合是现代数据分析的核心能力,本质是将数据建模为时间、地域、用户、设备等多维坐标系中的张量空间,而非简单求和。其技术原理依托OLAP立方体与维度建模,通过预计算、星型模型和层次化维度表实现高效切片、下钻与旋转。相比传统单维GROUP BY,它支撑业务归因、实时决策与根因诊断,广泛应用于电商大促监控、银行风控特征工程、制造业预测性维护等高价值场景。本文聚焦可落地的多维聚合操作链路,涵盖维度建模铁律、SQL进阶语法(ROLLUP/CUBE/GROUPING SETS)、BI工具深度配置及高频避坑指南,助力分 阅读详情

导读:

易车引入 Apache Doris 取得以下核心成果:

  • 替换 Druid、Kudu、ClickHouse 等近 10 种数据引擎
  • 构建 Apache Doris + Paimon + Hive 湖仓架构
  • 探索 Doris + AI(ChatBI、Data Agent)融合应用
  • 覆盖实时多维分析、用户画像、BI 报表等核心场景

数据的爆发式增长与业务对实时性的极致追求,驱动易车技术团队在实时湖仓建设上持续探索。目前易车已基于 Apache Doris + Paimon + Hive 构建了湖仓一体化数据平台,实现架构收敛统一:**逐步替换 Druid、Kudu、HBase、MongoDB、ClickHouse 等近 10 种引擎。**广泛应用于实时多维分析、用户画像及标签体系、BI 报表(实时报表、仪表盘)等核心场景。在此基础上,团队进一步探索 Apache Doris + AI 的融合应用,为智能化业务提供实时、统一的数据底座。本文将具体讲述易车数据平台架构的演进及具体实践。

一、早期架构:多引擎混用,流批难统一

在这里插入图片描述

易车数据平台的数据源丰富多样,涵盖业务日志、业务数据库(RDS/自建库)、消息系统、接口数据、第三方 API 及应用程序等。

团队通过内部数据集成工具将多源数据统一接入数据平台:底层离线数仓以 Hive 为主、基于 Hudi 构建数据湖;半结构化数据则主要存储在 Elasticsearch、HBase、MongoDB 中。

在 OLAP 引擎层面,团队先后使用过 Kudu、Kylin、Druid、ClickHouse 等多种引擎,即席分析 MPP 架构方面则使用了 Impala、Spark、Presto 等计算引擎,为数据分析、实时大屏、实时指标、个性化推荐等上层应用提供服务。

然而,早期架构链路复杂,面临多重挑战:

  • 开发效率低:不同业务场景需适配不同技术栈,开发人员需掌握多种引擎,上手慢、协同难。
  • 运维负担重:组件林立,维护难度大,故障排查链路长且复杂。
  • 流批割裂:实时与离线计算分离,无法通过一套架构同时满足,且实时性表现不足。

二、引擎选型:从 ClickHouse 到 Apache Doris

为满足快速响应、统一架构等新需求,团队决定对湖仓架构进行持续迭代与升级。在引擎选型上,ClickHouse 曾是易车选择的过渡方案,但随着业务深入,其短板愈发凸显:

  • 高频小批量写入场景支持不佳;
  • 数据一致性保障较弱;
  • 复杂多表关联查询场景下,查询性能有限;
  • 运维成本较高,生态不够丰富。

因此,团队开始评估新的 OLAP 引擎。Apache Doris 凭借以下优势成为最终选择:

  • 架构简洁:Doris 仅由 FE 和 BE 两类组件构成,支持数据自动均衡分布,无需手动配置分布式表,相比 ClickHouse 极大简化了运维。
  • 实时性更强:Doris 支持数据实时同步、更新与删除,且变更实时可见;ClickHouse 则多为后台异步执行,一致性较弱。
  • 查询性能优越:基于 MPP 架构与 Pipeline 模型,Doris 实现了高吞吐实时写入与高并发点查的兼顾;其查询优化器针对多表关联、聚合等复杂算子深度优化,即使在大数据量下仍能保持秒级响应。
  • 生态友好:Doris 原生兼容 MySQL 协议,可无缝对接各类 BI 工具,降低学习与集成成本;ClickHouse 则需使用特定 SQL 方言,学习成本较高。

综合以上考虑,团队最终选择 Apache Doris 作为核心 OLAP 引擎。在实际落地过程中,Doris 不仅在查询性能上表现稳定,其湖仓一体能力更是超出预期。

三、Apache Doris:湖仓一体,融合统一

Apache Doris 的湖仓一体能力,体现在三个维度:

  1. 可扩展的多源数据连接:
    1. Doris 定义了标准三层元数据模型:数据目录(Catalog)、数据库(Database)、数据表(Table)。无论是 Hive、Iceberg、Hudi、Paimon,还是支持 JDBC 协议的数据库系统,Doris 均能轻松连接并高效提取数据。
  2. 便捷的跨源联邦查询:
    1. Doris 支持在运行时动态创建多个数据源连接器,通过标准 SQL 即可实现对多个异构数据源的联邦查询。其联邦查询能力对标 Presto/Trino,能够在不移动现有数据的前提下,轻松完成跨平台的统一数据查询与分析,极大降低数据冗余和迁移成本。
  3. 高性能的数据处理
    1. 执行引擎:基于 MPP 架构与 Pipeline 执行模型,支持数据实时写入与高并发等值点查。
    2. 查询优化:针对多表关联、聚合、排序、分页等复杂 SQL 算子深度优化,内置高性能查询优化器,自动生成最优执行计划。
    3. 多模数据处理:原生支持 JSON、Variant 等半结构化数据类型,实现对结构化、半结构化、非结构化数据的统一分析与处理,满足多样化业务场景需求。
      在这里插入图片描述

四、架构升级:存储、计算、查询统一

引入 Apache Doris 后,构建了全新的湖仓一体融合架构,整体设计如下图所示:
在这里插入图片描述

  • 数据接入:实时数据链路中,业务数据库数据通过 Kafka、Flink CDC 实时写入 Doris;离线数据仍同步至 Hive 数仓,完成分层建模。
  • 实时处理:在 Doris 内部完成实时分层建设后,通过 Catalog 方式统一挂载 Hive、Hudi、Paimon 等外部数据源,实现离线数据查询与实时数据计算的无缝融合。
  • 统一查询入口:Doris 作为统一的查询引擎,可屏蔽底层异构存储与计算引擎的差异,向上支撑各类业务场景,大幅简化上层应用对接。

升级前后架构对比如下,可看到整体收益明显:

在这里插入图片描述

  • 组件统一,运维成本大幅降低: 此前,团队需同时维护 ClickHouse、Druid、Impala、Kylin、Kudu 等多种引擎,组件繁多且分散。统一至 Apache Doris 后,引擎数量锐减,技术栈得以收敛,运维负担显著减轻。
  • 架构简化,接入与开发效率提升: Doris 原生兼容 MySQL 协议与标准 SQL,极大降低了业务侧的接入门槛与学习成本。同时,团队基于 Doris 实现了统一的元数据服务与权限控制,避免了多套系统间的权限割裂,整体架构链路更简洁。
  • 融合统一,存储与计算一体化: 在存储层面,Apache Doris 既可承载离线数据存储,也可承载实时增量数据存储,实现存储一体化;在计算层面,Apache Doris 可统一承载实时数据分析与离线数据分析任务,实现流数据与批数据的统一分析。

五、智能分析:AI + Lakehouse 的探索与实践

在 AI 技术迅猛发展的当下,Apache Doris 积极推动 Data + AI 的深度融合与创新,这与易车在 AI 业务领域的探索方向高度契合。在构建湖仓一体架构的基础上,易车数据团队进一步探索了 Doris + AI 的融合应用,将 Doris 打造为面向智能化场景的数据底座,赋能上层 AI 应用与智能代理。

易车对数据引擎在 AI 场景下的应用有着迫切需求,而 Apache Doris 4.0 版本 引入了向量检索、混合检索以及 AI 原生函数,使得结构化分析与语义检索能够在同一系统中完成。并提供了面向 Agent 的 MCP 交互能力,能够有效支撑易车在 AI 业务中的实践。

在这里插入图片描述

  1. 能力底座:为 AI 提供统一数据入口

Apache Doris 天然支持多源联邦查询,可无缝对接 MySQL、Hive、PostgreSQL、Hudi 等异构数据源。这意味着,上层 AI 应用无需关心数据实际存储在何处,只需通过 Doris 即可统一访问数仓内的离线历史数据、实时增量数据以及业务库中的维度信息。这种能力为 AI 模型训练、特征工程、实时推理等场景提供了高效、统一的数据供给通道。

  1. Doris MCP:开放数据能力,赋能智能代理

Apache Doris 开源了 Doris MCP 工具,为 AI 代理与数据平台的交互提供了标准化接口。团队基于 Doris MCP 及内部二次开发,构建了一套面向智能代理的数据服务层,支持通过 MCP 执行 SQL 查询、获取库表 Schema、列举表列表、检索字段信息等操作。这些能力被封装成可复用的 API,使得上层 AI 应用能够以自然语言或结构化方式快速获取所需数据上下文,极大降低了智能代理接入数据平台的复杂度。

  1. 场景实践:AI 应用落地探索

易车基于 Apache Doris,已在多个智能化场景中落地应用,具体包括:

  • 智能化运维与管理: 支撑数据治理、资产管理、自动化运维等 Agent,实现数据任务的智能调度与异常自愈;
  • 交互式智能分析: 赋能内部 Data Agent 及智能助手 ChatBI,支持自然语言问答、业务指标查询等交互式分析场景;
  • 语义理解与知识服务: 为问答系统、知识库等应用提供底层支持,并基于 Doris 实现知识向量的实时更新与混合检索,构建统一的语义记忆层。

Doris 社区目前还在 AI 侧发力,未来易车数据团队也会持续跟进与参与 Doris MCP 的建设。此外,Apache Doris 4.0 版本已支持混合检索分析、AI 原生函数等。易车数据团队也将在此版本上进一步探索。

六、结束语

从多引擎混用到统一架构,从离线分析到实时智能,易车数据平台在 Apache Doris 的加持下,完成了从“支撑业务”到“驱动业务”的跨越。未来,随着存算分离架构的落地和 AI 能力的深度融合,我们将持续打造更高效、更智能的数据基础设施,为业务创新提供源源不断的数据动力。

当前易车数据平台主要运行在 Doris 2.0 版本之上,下一步将全面升级至存算分离架构。 通过存算解耦与冷热分层,进一步降低存储成本、提升查询效率,为业务增长释放更多资源。

云基础设施的成熟,推动了 Apache Doris 存算分离架构商业化的实现。SelectDB Cloud和阿里云数据库 SelectDB 版 均基于 Apache Doris 内核构建,二者均采用存算分离架构,为企业提供更加弹性、易管理的部署模式。

  • SelectDB Cloud:多云适配,支持阿里云、华为云、AWS 等平台以 SaaS 模式部署,并提供 BYOC(自带云)模式,满足数据合规与成本控制需求。
  • 阿里云数据库 SelectDB 版:作为阿里云原生服务,与 VPC、RAM 权限、监控等云服务无缝集成,提供类似用户 VPC 内自建的网络体验与便捷管理。
【信息科学与工程学】【数据科学】数据科学领域-第十一篇 数据集成算法01 ​​降低维护成本​​:通过抽象通用流程(如),当需要修改故障注入逻辑(如更换混沌工具)时,只需修改一处代码,无需修改所有测试用例;​​提升扩展性​​:通过参数化故障场景(如),可快速生成新的故障用例(如针对新服务的延迟故障),适应系统迭代需求;​​增强场景真实性​​:通过组合混沌操作(如),模拟真实生产环境中的复杂故障链(如“网络延迟+服务宕机”),更准确地验证系统韧性;​​提高分析效率​​:通过自动化结果分析(如),快速获取MTTR、错误率等关键指标,减少人工分析时间。 阅读详情

相关推荐

【信息科学与工程学】【数据中心】 第四篇 低空智算中心

电信运营商通过 ​​“技术-平台-生态”三维协同​基建层​:以通感一体化基站构建“空天地一体”网络,突破传统覆盖瓶颈;​平台层​:通过星云/星巡等平台实现空域智能调度,降低管理复杂度;​生态层​:联合产业联盟推动标准化,加速场景落地(如物流、巡检、安防)。​未来重点​:需突破高频器件集成度、跨域数据安全流通等瓶颈,实现从“通感一体”向“通感算智融合”的跃迁。

weixin_49199313的博客 792

Open-AutoGLM API Key申请指南(从零到上线的完整流程)

快速获取Open-AutoGLM开发者api key,掌握从申请到部署的全流程。适用于AI应用开发、自动化任务处理等场景,提供实名认证、权限配置与安全调用核心方法,高效对接大模型能力。步骤清晰,新手友好,值得收藏。

InstrIsle的博客 808

【信息科学与工程学】【数据中心】第二十四篇 数据中心DaaS场景及算法

Flink, Kafka Streams, 时序数据库。Flink, Kafka Streams, 流处理引擎。Presto, ClickHouse, 查询加速引擎。Presto, ClickHouse, 查询加速引擎。延迟<50ms,可用性>99.99%,QPS>10K。REST API, GraphQL, API网关。Tableau, Power BI, 自助BI。Tableau, Power BI, 可视化库。Spark, Hadoop, 分布式计算框架。Spark, Hadoop, 分布式计算。

weixin_49199313的博客 1058

数仓系列:一文读懂仓湖一体架构

事务日志 = 订单系统(记录所有变更)Base Files = 主仓库(存放大批量货物)Delta Files = 快递暂存区(临时存放小件)Compaction = 夜间整理(把暂存区货物整理到主仓库)读写分离 = 进货出货双通道(互不干扰)优化技术 = 智能货架 + 快速定位系统这样,既能处理大批量货物(批处理),又能快速处理零散订单(实时写入),还能让客户即时查询(毫秒级响应)。

兴趣是最好的老师 1532

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 399

【信息科学与工程学】【数据科学】第一百二十二篇 大数据产品中的函数与算法01

它通常指。下面按照你给出的表格列💡 说明:下表中的"产品"以开源/主流商业组件为具象载体(Hadoop、Spark、Flink、Kafka、Hive、HBase、Iceberg、Atlas、Ranger、TensorFlow 等),它们共同构成一个完整的大数据产品家族;代码为实现示例,用于说明算法在工程系统中的落地方式。

weixin_49199313的博客 197

Apache Doris 4.0.1 集群部署与 Paimon 数据湖集成实战文档

高可用性 (HA):配置了nd1和nd3双 Metastore 节点,任意单点故障不影响 Doris 业务查询。性能优化 (CBO):Doris 可以从 HMS 获取表的行数、文件大小等统计信息,生成更优的 Join 执行计划。数据准确性:HMS 模式能正确识别 Paimon/Hive 的 ACID 事务状态,避免读取到未提交或已删除的脏数据。运维规范:统一通过 Metastore 管理元数据,符合数仓建设标准。

QXXDYL的博客 1495

JSON(详解)

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它以易于阅读和编写的文本格式来存储和表示数据,通常用于在不同的系统之间进行数据交换。JSON数据以键-值对的形式组织,可以包含对象、数组、字符串、数字等基本数据类型。它经常在Web开发、API通信等领域被广泛使用。

7702

Apache Doris × AI 的5个应用场景(附完整案例)

随着技术的不断演进,Doris与AI的融合还将向更深层次发展:向量语义检索:更完善更精准的相似度检索数据准备与特征存储:为AI模型训练提供高效数据支持湖仓一体集成:无界对接更多的结构化和非结构化数据源ChatBI与Agent能力增强:更智能的数据分析体验Doris MCP Server&Client:预计在4月正式开源......这些演进方向正在重塑企业的数据分析与AI应用方式,让数据价值最大化。不仅解决了"数据孤岛"和"AI幻觉"等传统痛点,同时也开创了数据智能化的新范式。

2401_84204207的博客 1689

Dify整合FireCrawl与百度搜索实战:手把手教你打造全能研究助手

本文手把手教你基于Dify平台,整合FireCrawl网页爬虫与百度搜索能力,构建一个能同时处理本地文档与实时网络信息的全能研究助手。通过部署核心环境、配置模型、接入两大工具并设计自动化工作流,实现从问题提出到深度分析报告生成的一站式解决方案,极大提升信息调研与整合效率。

weixin_29062963的博客 500

SpringBoot实现电子发票生成

电子发票是近年来比较流行的一种票据形式,它取代了以往传统的纸质发票,具有减少纸张浪费、方便有效查验等优点。本文将介绍如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。在本文中,我们介绍了如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。

不愧是暮言的博客 6090

Apache Doris + SelectDB:定义 AI 时代,实时分析的三大范式

我们正处在一个数据与智能深度耦合的时代。。这正是我们今天强调实时分析的底层逻辑。它不再是加分项,而是企业在数字经济中生存与成功的必需品。

SelectDB 623

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1126

亚马逊云科技×飞轮科技:AI创新实现数据分析“智变”!

北京飞轮数据科技有限公司(以下简称“飞轮科技”),是一家基于开源分析型数据库Apache Doris的商业化公司,由Apache Doris原创团队于2022年1月创建,主要面向全球提供实时数据仓库的产品与解决方案SelectDB,以满足各类场景的实时数据分析需求。其产品在2022年10月登顶全球分析型数据库测评榜单ClickBench,在多种场景下,性能全球排名第一。

2401_85188501的博客 277

彻底卸载Ubuntu双系统,并完美回收100G空间给D盘

本文记录了安全卸载Ubuntu双系统并回收磁盘空间的全过程。作者首先通过Windows命令行彻底清除Ubuntu启动项,避免GRUB引导报错;随后在磁盘管理中删除Linux分区,将100G未分配空间合并至相邻的D盘。针对C盘空间不足问题,作者采用Dism++清理系统文件,并将用户文档、聊天记录等迁移至扩容后的D盘。最终实现了引导纯净、空间合理分配的目标,特别强调分区扩展必须遵循"相邻原则",建议通过间接迁移而非直接扩容来优化系统盘空间管理。

2403_85993278的博客 1512

保姆级教程:用Python+NumPy手把手模拟光学散射与记忆效应(附代码)

本文提供了一份详细的Python+NumPy教程,手把手教你模拟光学散射与记忆效应。从基础光波建模到散射介质实现,再到菲涅尔衍射和光学记忆效应验证,逐步构建完整的仿真系统。通过附带的代码示例,读者可以快速掌握计算光学仿真的核心技术,为医学成像、物理仿真等领域的研究提供实用工具。

weixin_30172941的博客 324

2025年11月国产数据库大事记:OceanBase发布首款AI数据库seekdb,中国电信开源TeleDB……

本文梳理了过去一月国产数据库行业热点资讯、新品发布等事件,欢迎一起阅读盘点。

Era666的博客 1181

ZYNQ Petalinux编译系统启动文件实战指南

本文提出的混合编译加速方案实测可将编译时间从45分钟缩短至18分钟,QSPI双启动方案已在工业控制领域成功应用。Xilinx官方UG1144文档(最新v2023.1版)正点原子《ZYNQ嵌入式开发实战》开源项目Meta-Petalinux(GitHub趋势项目)未来展望:随着Versal平台的普及,Petalinux将支持更多AI加速器原生驱动,值得持续关注。

QQ_778132974的博客 811

中国开源年会十年回顾:技术演进与社区成长

开源技术作为现代软件开发的基石,通过社区协作推动技术创新。其核心原理在于开放源代码的共享与协作开发模式,显著降低了技术复用成本并加速了工程实践迭代。在云原生、AI基础设施等前沿领域,开源项目如Kubernetes和MindSpore持续优化性能指标,例如某电商平台通过eBPF技术将服务通信延迟降低40%。开源生态的健康度评估体系(如CHAOSS模型)和商业化实践(如红帽订阅模式)为行业提供了重要参考。这些技术演进在金融风控、电商大促等场景中展现出巨大价值,中国开源年会(COSCon)正是观察这些趋势的重要窗

weixin_31309419的博客 176

DataX对接数据如何在ODS加密脱敏数据(插件开发)

datax对接mysql数据,对姓名只保留姓,名变成**。对这种简单的脱敏,可以不用修改datax源码,直接在配置文件上实现。

大模型大数据攻城狮的专栏 991

VC中sqlite的使用

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

多维聚合实战:从GROUP BY到OLAP立方体的工程落地

多维聚合是现代数据分析的核心能力,指在多个业务维度(如时间、地域、产品)上对度量值(如销售额、转化率)进行灵活分组与汇总的计算范式。其底层原理依赖星型模型、预计算立方体和ANSI SQL高级聚合语法(如GROUPING SETS、ROLLUP),通过结构化建模解决维度爆炸、计算冗余与语义割裂三大痛点。技术价值在于统一数据语义、加速即席查询、支撑BI钻取与AI特征工程。典型应用场景覆盖电商销售分析、用户行为分层、风控联合分布建模等。本文聚焦生产级落地路径,涵盖Star Schema建模、OLAP引擎选型、物化

weixin_30667649的博客 418

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

多维聚合数据操作:超越GROUP BY的立方体思维与实战方法论

多维聚合是商业智能与数据分析的核心能力,其本质并非简单SQL分组,而是基于超立方体(Hypercube)模型的数据空间建模。它涉及Roll-up、Drill-down、Slice、Dice四大数学语义明确的操作类型,需兼顾维度完整性、时间智能、空值拓扑补全与动态排名等关键技术。在零售、SaaS、制造等行业场景中,多维操作直接决定同比环比准确性、Top N跨维一致性及报表下钻可信度。本文聚焦多维聚合中的核心操作实践,结合真实项目拆解维度爆炸应对、时间维度错乱规避、窗口函数选型逻辑等高频痛点,提供从SQL基线聚

ailiao2015的博客 334

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

多维聚合中的数据操纵:维度裁剪、度量重算与流式再加工

多维聚合是现代BI与实时分析的核心能力,本质是构建可动态组合的维度-度量契约体系,支撑任意切片、下钻与交叉分析。其技术原理超越传统GROUP BY,依赖维度层级定义、度量语义声明(如ratio/sum/cumulative)及空值可控传播机制。关键价值在于打破报表僵化、实现角色自适应视图与业务规则内嵌计算。典型应用场景包括销售多维下钻、风控组合筛选、IoT时序聚合等。本文聚焦Data Manipulation in Multi-Dimensional Aggregation这一工程实践核心,系统解析维度动态

weixin_30698297的博客 321

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 177
上一篇: 我们用 AI Observe Stack 观测了 OpenClaw,发现 AI Agent 背后的这些隐患
下一篇: Apache Doris + SelectDB:定义 AI 时代,实时分析的三大范式
SelectDB技术团队
博客等级 码龄4年 2119粉丝 484原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

SelectDB技术团队

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

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

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

打赏作者

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

抵扣说明:

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

余额充值