读数据自助服务实践指南:数据开放与洞察提效11数据虚拟化服务

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

1. 数据虚拟化服务

1.1. 趋势

  • 1.1.1. 与数据集相关联的多语言数据模型

    • 1.1.1.1. 多语言持久化既适用于数据湖,也适用于应用程序事务型数据
  • 1.1.2. 查询引擎和数据存储持久化的解耦允许不同的查询引擎对数据湖中持久化的数据运行查询

    • 1.1.2.1. 通常,为不同的查询工作负载组合配置多个处理集群,选择合适的集群类型是关键
  • 1.1.3. 对于越来越多的用例(如实时BI)​,需要实时关联数据湖的数据和应用程序中的数据

    • 1.1.3.1. 随着洞察的生成变得越来越实时,有必要将数据湖中的历史数据与应用程序数据存储中的实时数据结合起来

1.2. 痛点

  • 1.2.1. 由于数据持久化在数据湖中的多语言数据存储以及应用程序数据源中,编写查询时需要针对特定数据存储使用不同方言,因此形成了学习曲线

  • 1.2.2. 需要将不同数据存储的数据合并到一个查询中。先聚合数据并将其转换为规范化形式,然后再进行查询的方法不能满足越来越多的实时分析需求

  • 1.2.3. 选择合适的查询处理集群

    • 1.2.3.1. 通过解耦架构,可以根据数据基数、查询类型等选择不同的查询引擎对数据执行查询

1.3. 理想情况下,对于关联的底层数据存储和集群相关的细节,数据虚拟化服务应该将其隐藏

  • 1.3.1. 如果数据用户提交一个类似SQL的查询,服务会自动将查询在数据存储间进行联合查询,并根据数据存储的特定原语优化查询语句

  • 1.3.2. 通过自动化处理特定数据存储的查询细节,可以减少数据用户查询作业的时间

1.4. 虚拟化的概念抽象了底层处理的细节,为用户提供了系统的单一逻辑视图

1.5. 在大数据时代,数据存储技术和处理引擎没有通用的解决方案,数据用户应该关注如何跨数据源查询数据

  • 1.5.1. 应该能够将数据作为单个逻辑命名空间来访问和查询,而不用考虑底层数据持久化模型和查询引擎如何处理查询

2. 路线图

2.1. 查询虚拟化服务适用于数据的所有阶段(发现、准备、构建和操作阶段)​

2.2. 探索数据源

  • 2.2.1. 在发现阶段,访问驻留在应用程序多语言存储区、仓库和数据湖中的数据以理解和迭代所需的数据属性,可以进行理解和迭代

  • 2.2.2. 跨多个孤岛查询和连接数据的能力也适用于操作阶段

  • 2.2.3. 构建跨数据孤岛实时连接的模型或仪表盘非常重要

  • 2.2.4. 如今,首先在数据湖中聚合数据,这对于实时需求来说可能不可行

  • 2.2.5. 假设有一个逻辑数据库包含所有孤岛存储,数据用户就能够以单个命名空间的形式访问数据

2.3. 选择处理集群

  • 2.3.1. 通过解耦查询引擎和数据持久化,同一数据可以使用不同的查询引擎运行在不同的查询集群上进行分析

  • 2.3.2. 根据查询的属性选择合适的引擎需要一定的专业知识

  • 2.3.3. 处理集群的选择还需要考虑负载均衡等动态属性,以及蓝绿部署等维护计划

3. 最小化查询耗时

3.1. 查询耗时是开发查询所花费时间的总和,包括跨多语言数据存储访问数据并选择处理环境来执行查询

3.2. 选择执行环境

  • 3.2.1. 择执行环境涉及根据查询类型将查询路由到合适的处理集群

  • 3.2.2. 需要跟踪现有环境及其属性清单、分析查询属性,并监控集群上的负载

  • 3.2.3. 挑战在于跟踪集群清单、持续更新集群的当前状态以获得负载和可用性,以及在无需用户更改的情况下透明地路由请求

3.3. 制定多语言查询

  • 3.3.1. 数据也可能驻留在数据湖中,以可能缺少模式或可能涉及嵌套或多个值的格式存储

  • 3.3.2. 每种不同类型和风格的数据存储可能适合特定的用例,但是每种类型的数据存储都有自己的查询语言

  • 3.3.3. 语言查询引擎、NewSQL和NoSQL数据存储提供半结构化的数据模式(通常基于JSON)和相应的查询语言

  • 3.3.4. 由于缺乏正式的语法和语义、习惯性的语言结构,所以语法、语义和实际功能的巨大差异会带来问题—很难理解、比较和使用这些语言

  • 3.3.5. 查询语言和数据存储格式之间存在紧密耦合

    • 3.3.5.1. 如果需要将数据更改为其他格式或需要更改查询引擎,则必须更改应用程序和查询代码

    • 3.3.5.2. 这将是提升数据使用的敏捷性和灵活性的一大障碍

3.4. 跨孤岛连接数据

  • 3.4.1. 数据存储在多个多语言数据存储源中

  • 3.4.2. 对于孤岛数据源的查询,首先需要在数据湖中聚合数据,如果考虑到实时性要求,这可能无法满足需求

  • 3.4.3. 挑战是平衡应用程序数据存储上的负载与来自分析系统的流量

  • 3.4.4. 传统查询优化器需要考虑基数和数据布局,这很难跨数据孤岛实现

  • 3.4.5. 应用程序数据存储的数据会缓存成物化视图,以支持重复查询

4. 定义需求

4.1. 当前痛点分析

  • 4.1.1. 数据虚拟化需求

    • 4.1.1.1. 是否使用了多个查询引擎

    • 4.1.1.2. 是否在数据湖或应用程序数据存储中使用多语言持久性

    • 4.1.1.3. 是否需要使用跨事务性存储

  • 4.1.2. 数据虚拟化的影响

    • 4.1.2.1. 展示定义查询所花费的时间

    • 4.1.2.2. 查询运行和优化所需的平均迭代次数

    • 4.1.2.3. 不同多语言平台所需的专业知识

    • 4.1.2.4. 件发生与分析之间时间差的平均处理延迟

  • 4.1.3. 应用程序数据存储隔离的必要性

    • 4.1.3.1. 应用程序存储的当前负载以及应用程序查询的速度减慢情况

    • 4.1.3.2. 由于数据存储性能而导致的应用程序性能与现有SLA冲突

    • 4.1.3.3. 应用程序数据的变化率

    • 4.1.3.4. 对于应用程序数据存储饱和或数据快速变化的情况,可能无法实施数据虚拟化策略

4.2. 操作要求

  • 4.2.1. 已部署技术的互操作性

    • 4.2.1.1. 核心考虑因素是不同的数据模型和数据存储技术能够在数据湖和应用程序中将数据持久化
  • 4.2.2. 可观测性工具

    • 4.2.2.1. 数据虚拟化服务需要与现有的监控、告警和调试工具集成,以确保可用性、正确性和查询SLA
  • 4.2.3. 速度和容量

    • 4.2.3.1. 在设计数据虚拟化服务时,需要考虑要处理的并发查询的数量、处理的查询的复杂性以及可容忍的实时分析延迟

4.3. 功能性需求

  • 4.3.1. 自动将查询路由到正确的集群,而无需任何客户端更改

  • 4.3.2. 简化了对存储在多语言数据存储中结构化、半结构化和非结构化数据的查询方法

  • 4.3.3. 联合查询支持连接驻留在数据湖中不同数据存储和应用程序微服务之间的数据

  • 4.3.4. 可以限制推送到应用程序数据存储的查询数量

4.4. 非功能性需求

  • 4.4.1. 可扩展性

    • 4.4.1.1. 服务应该是可扩展的,以适应不断变化的环境,并且能够支持新的工具和框架
  • 4.4.2. 成本

    • 4.4.2.1. 虚拟化计算成本很高,降低成本至关重要
  • 4.4.3. 可调试性

    • 4.4.3.1. 在虚拟化服务上开发的查询应该易于监控和调试,以确保大规模运行的生产部署的正确性和性能优化

5. 实现模式

5.1. 自动查询路由模式

  • 5.1.1. 简化为作业选择正确工具相关的任务

  • 5.1.2. 这种模式隐藏了为查询选择正确的处理环境的复杂性

  • 5.1.3. 目标是自动将查询路由至处理集群,数据用户只需提交作业到虚拟化服务

    • 5.1.3.1. 这种模式是查询和可用的处理集群之间的匹配器
  • 5.1.4. 数据虚拟化服务为每个提交的作业生成一个自定义运行脚本

  • 5.1.5. 该模式的重点是在符合用户作业需求的集群上启动作业来完成用户的任务

  • 5.1.6. Netflix的Genie

    • 5.1.6.1. 允许数据用户以及各种系统(调度器、微服务、Python库等)提交作业,而不必真正了解集群本身

    • 5.1.6.2. 旨在简化查询的路由

  • 5.1.7. 随着查询处理配置的日益复杂,查询路由模式对于隐藏底层复杂性(尤其是在大规模场景中)变得越来越重要

  • 5.1.8. 该模式的优点是透明路由,它兼容了静态配置和动态负载属性

  • 5.1.9. 缺点是路由服务可能成为瓶颈或单一饱和点

5.2. 单个查询语言模式

  • 5.2.1. 简化与在结构化、半结构化和非结构化数据上编写查询语句相关的学习曲线

  • 5.2.2. 注重统一的查询语言和编程模型

  • 5.2.3. 数据用户可以在不同数据存储的结构化、半结构化和非结构化数据中使用统一的方法

  • 5.2.4. PartiQL

    • 5.2.4.1. PartiQL是一种兼容SQL的查询语言,可以轻松高效地查询数据,无论数据存储在哪里或以何种格式存储

    • 5.2.4.2. 具有最少的SQL扩展,可以对结构化、半结构化和嵌套数据集的组合进行直观的过滤、连接、聚合和窗口化

    • 5.2.4.3. 不需要数据集上预定义模式,其语法和语义独立于数据格式,也就是说,查询语句在JSON、Parquet、ORC、CSV或其他格式的底层数据上是完全相同的

    • 5.2.4.4. 查询是在一个全面的逻辑类型系统上操作的,这个系统可以映射到不同的底层格式

    • 5.2.4.5. PartiQL的语法和语义并不与特定的底层数据存储绑定

    • 5.2.4.6. 是一个干净、基础良好的查询语言,它非常接近SQL,并且可以处理嵌套数据和半结构化数据

    • 5.2.4.7. PartiQL利用了数据库研究界的工作成果,即UCSD的SQL++

  • 5.2.5. Apache Drill

    • 5.2.5.1. 是SQL的直观扩展示例,可以轻松查询复杂数据

    • 5.2.5.2. 特点是采用了JSON数据模型,可以对嵌套数据以及在现代应用程序和非关系型数据存储中常见的快速演变的结构进行查询

  • 5.2.6. Apache Beam

    • 5.2.6.1. 统一了批处理和流式处理

    • 5.2.6.2. 是一个开源的统一模型,用于定义批处理和流式处理的数据并行处理管道

    • 5.2.6.3. 分布式处理后端

      5.2.6.3.1. Apache Apex

      5.2.6.3.2. Apache Flink

      5.2.6.3.3. Apache Spark

      5.2.6.3.4. Google Cloud Dataflow

5.3. 联合查询模式

  • 5.3.1. 简化与跨源连接数据相关的任务

  • 5.3.2. 该模式提供了可以使用单个查询引擎访问的单个查询引擎

  • 5.3.3. 联合查询模式允许连接驻留在不同数据存储中的数据

  • 5.3.4. 数据用户编写查询语句来操作数据,无须暴露各个数据存储的底层复杂性,也不用先将数据物理地聚合到一个存储库中

  • 5.3.5. 查询处理是在幕后联合的,从各个存储中获取数据、连接数据,并生成最终结果

  • 5.3.6. Presto

    • 5.3.6.1. 是一个分布式ANSI SQL引擎,用于处理大数据即席查询
BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码) 本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。 阅读详情

相关推荐

抖音用户主页视频数据爬虫详解(点赞,收藏,分享等)

的包中有个max_cursor参数,请求载荷中也有一个这样的参数,每次请求的数据中max_cursor是下一个请求的载荷,,,同时has_more为1时候代表还能请求,0为不能请求,我们做如下判断。最后发现cookie很容易过期,批量爬取有点困难,,,,我们采用drissoinpage进行自动化获取。首先进行抓包分析,,,随便找个主页,f12,关键词搜索,发现这个包是以post开头。请你第一次运行先按0,进行登录(或者触发反爬的时候),登录完成之后,按1进行爬取,完整代码请在知识星球。

m0_74823507的博客 3429

读数据自助服务实践指南:数据开放与洞察提效21读后总结与感想兼导读

读数据自助服务实践指南:数据开放与洞察提效21读后总结与感想兼导读

lyingSeven的博客 817

炉石传说游戏系统拆解和部分系统分析

一.游戏综述 《炉石传说:魔兽英雄传》是一款由暴雪娱乐公司出品的策略类卡牌游戏。中国大陆地区的独家运营由网易公司代理。2014年3月13日全球同步正式运营。游戏背景设定于暴雪的魔兽系列,共十位魔兽中的角色作为十种不同的职业。而玩家要做的,就是根据己方现有的卡牌组建合适的卡组,指挥英雄,驱动随从,施展法术,与游戏好友或素不相识的对手一决高下。 二.游戏系统拆解图 三.游戏系统部分分析 1. 对战系统 (1)战斗准备 炉石传说开始前都需要配置至少30张卡牌作为出战卡组 .....

Jimmy72236的博客 4926

读数据自助服务实践指南:数据开放与洞察提效02洞察耗时

读数据自助服务实践指南:数据开放与洞察提效02洞察耗时

lyingSeven的博客 1833

【Godot】构建可维护的游戏工程 —— 项目代码组织结构

本文系统梳理了Godot引擎项目组织原则与架构模式,提出场景中心化、命名规范一致性和资源隔离三大核心原则。推荐按功能模块划分目录结构(如scenes/、entities/、systems/),采用snake_case命名避免跨平台问题,并通过.gdignore优化资源管理。文章详细解析了自包含场景设计、信号驱动解耦等架构技巧,以及团队协作中的版本控制策略,强调通过模块化设计平衡一致性与实用性。最终目标构建清晰可维护的项目结构,使资源定位和功能扩展更加高效。(148字)

qq_40205510的博客 1176

【ZYNQ】OV5640 图像采集与显示

OV5640 是豪威(OmniVision)半导体公司推出的高性能的 CMOS 数字图像传感器,支持最高 500 万像素图像采集,支持 RAW RGB、RGB565、YCbCr422 等图像格式输出,可应用于手机、平板等电子设备。本文主要介绍如何使用 Zynq 驱动 OV5640 摄像头进行图像采集,并通过 HDMI 实时显示。

洋洋Young的博客 1433

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 292

PHPStorm携手ThinkPHP8:开启高效开发之旅

本文围绕使用 PHPStorm 进行 ThinkPHP8 开发展开,先介绍开发环境搭建与 Xdebug 配置,再阐述 PHPStorm 集成 ThinkPHP8 的步骤,包括项目导入、解释器和服务器配置。还讲解了项目开发基础、数据库操作、高级技巧、调试处理及部署上线等内容,为开发者提供了从环境搭建到项目上线的完整指引,助力高效开展 ThinkPHP8 开发工作。

邓邓子的博客 1545

V8 机制、手写核心函数与 TypeScript 类型体操

或固定初始化(如数组先定长、对象先给全字段)保持类型与形状稳定;这些都比"换框架"更基础。只能处理纯数据(丢函数、Date、RegExp、循环引用报错)。生产级深拷贝要处理:原始值短路、循环引用、V8(Chrome / Node 的 JS 引擎)不是"解释一行跑一行"那么简单,它用。图:V8 执行流程——解释执行 + 热点优化,优化失败会 Deopt 回退。JS 内存自动管理,但"自动"不等于"不会漏"。是"固定间隔最多执行一次"。手写 Promise 是"懂异步"的试金石。是"停下后才执行最后一次",

qq_38468358的博客 349

026:vue+threeJS 设置地面铺砖的效果

BoxGeometry 是 Three.js 中用于创建立方体或长方体的几何体类。它允许你指定立方体的宽度、高度、深度以及这三个方向上的分段数,从而控制立方体的细分程度。width: 立方体的宽度(沿 x 轴方向)。height: 立方体的高度(沿 y 轴方向)。depth: 立方体的深度(沿 z 轴方向)。widthSegments: 可选参数,指定立方体在 x 轴方向上的分段数,默认值为 1。heightSegments: 可选参数,指定立方体在 y 轴方向上的分段数,默认值为 1。

大剑师兰特的GIS世界 647

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 124

Spring Boot 数据源与 MyBatis(-Plus) 自定义配置详解

本文详解 Spring Boot 中单数据源环境下 HikariCP 与 MyBatis-Plus 的自定义配置。通过手动声明 SqlSessionFactory,实现下划线转驼峰、日志输出、一级缓存策略等精细化控制。结合 HikariCP 核心参数调优(如最大连接数、连接生命周期),确保高性能与稳定性。适用于仅需访问单一数据库的场景,避免多数据源复杂性,兼顾性能与可维护性。

BADAO_LIUMANG_QIZHI的博客 206

关于瑞芯微SDK中buildroot的架构分析、配置细节、以及一些使用步骤

摘要:瑞芯微SDK基于Buildroot框架,针对RK3568等芯片提供定制化开发环境。核心目录包括buildroot(配置与编译框架)、kernel(定制内核)和u-boot(引导程序)。开发流程为:1)加载芯片默认配置;2)通过menuconfig定制系统(架构、内核、软件包等);3)可选修改内核配置。关键硬件适配需修改设备树(dts)和分区表(parameter.txt),系统行为通过启动脚本(S90network)调整。最终执行make编译生成可烧录固件。该框架通过配置文件驱动,实现从工具链构建到固

Hyjks的博客 1199

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

Java EE 进阶:8.MyBatis 操作数据库(入门)(第一弹)

要努力去发光,而不是被照亮~ 145

蓝牙模块HM-10手册

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode Hot 100 二叉树专题(二)3 题(Java)

本篇文章共 3 题:543. 二叉树的直径、102. 二叉树的层序遍历、108. 将有序数组转换为二叉搜索树。 每道题都统一按「① 题目分析 & 解题思路 → ② 常见解法(附代码)及讲解 → ③ 知识点总结」的顺序组织;代码使用 Java 编写,节点定义沿用 LeetCode 默认的 TreeNode。

2401_88612756的博客 368

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

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 512

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JDK 下载安装:装完 Java 提示「不是内部或外部命令」?环境变量没配

JDK 是写 Java 程序必须装的东西。它包含运行 Java 的虚拟机(JRE)和编译 Java 的编译器(javac)——装了它,能跑、.java文件能编译成可执行程序。免费,学习和小规模生产都不花钱。

科小怪的博客 638

Java 集合容器高频面试题全解:HashMap 树化阈值、1.7 死循环与 ConcurrentHashMap 演进(2026 招聘 JD 真题复盘)

HashMap 树化阈值 8 的泊松分布依据、退化阈值 6 的防抖设计、JDK 1.7 头插成环死循环的排查与修复、1.8 尾插后为何仍线程不安全、ConcurrentHashMap 放弃分段锁的原因与 ForwardingNode 协作扩容、computeIfAbsent 死锁陷阱、大集合找重复的场景题选型,附三层追问链自测。题目来源为 38 期公开招聘 JD 样本与字节、拼多多、建行、美团、快手公开面经。

蒙眼过河 349

java框架大全

java框架大全

qq_39326137的博客 184

Java 多态 学习笔记

多态是面向对象编程的重要特性,指同一操作作用于不同对象时产生不同行为。其核心在于“父类引用指向子类对象”,结合方法重写实现运行时动态绑定。多态使代码更灵活、可扩展,如用Person p = new Student();统一处理各类人员注册,无需修改调用逻辑。但多态无法直接调用子类特有方法,需通过instanceof判断并强制转换。编译时看左边(类型),运行时看右边(实际对象),实现解耦与维护便利。

AA_AA114514的博客 365

SecureRandom做随机源,这个Java随机字符串工具类有3个方法

本文分享一款JDK17环境下的Java随机字符串工具类,内置3个开箱即用的方法,全部采用SecureRandom加密安全随机源,不存在弱随机、可预测、取模偏差等问题。工具类支持默认62字符集随机串、纯数字随机串、自定义字符集随机串三种生成模式,支持Unicode码点级别的字符集处理,兼容Emoji等增补字符,边界处理严格,异常信息明确,适合验证码、邀请码、盐值、随机口令、短链码等场景,源码可直接复制使用。

Java后端 | AI智能体应用实战派 | 电脑技能行家 300

IDEA 简介:从零认识 IntelliJ IDEA

IDEA 全称,是由 JetBrains 公司开发的一款主流 Java 集成开发环境(IDE)。它集代码编辑、编译、调试、测试、版本控制、构建管理等功能于一体,被大量 Java 开发者视为日常开发的首选工具。所谓 IDE(Integrated Development Environment,集成开发环境),就是把写代码所需的各类工具整合到同一个界面中。相比只用文本编辑器加命令行编译,IDE 能显著减少重复操作,让开发者把精力集中在业务逻辑上。

ztI10的博客 162

Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

【代码】Java实现批量线段相交检测(跨积判定+扫描线优化与踩坑复盘)

m0_64476639的博客 332

TRingBuffer两端都能增删(快递站版)

TRingBuffer 是一个支持两端增删、下标访问且容量动态增长的环形双端队列。它通过无符号索引的永不归零设计,利用减法自动模运算实现空满判断与元素计数,避免了传统环形缓冲浪费格子的问题。内部以票号(索引)标记首尾,扩容时重排元素为连续存储,保证 O(1) 操作与高缓存效率。虽不线程安全,但其高效性使其成为游戏开发中事件队列、命令缓冲等场景的理想选择。

u013768914的博客 301

ubuntu安装hadoop系统

本文详细介绍了基于VMware克隆虚拟机搭建三节点Hadoop分布式集群的全过程:使用同一Ubuntu镜像克隆出master、worker1、worker2三台虚拟机,依次配置主机名、固定IP(如192.168.82.10/11/12)、SSH服务及免密登录,确保节点间网络互通。随后安装Java,下载配置Hadoop并分发至各节点,最终初始化启动集群,验证其存储与计算功能,实现高效的大数据环境部署。

qq_43592674的博客 346

Mac上装了最新版本的Android Studio,但是没找到jdk的设置选项也没找到jbr的目录

新版Android Studio(2025.3.1+)因三项变更导致常见问题:一、JDK设置移至“DaemonJVM criteria”,新项目默认自动探测或下载JDK;二、JBR目录改名为带版本号的jbr-21等,需进入.app/Contents/查看,或通过About窗口确认运行时;三、命令行缺adb因platform-tools未加入PATH,需在SDK Manager中勾选并配置~/.zshrc中的ANDROID_HOME及PATH。重装或清理残留可解决缺失问题,切勿手动设JAVA_HOME或安装冲

Programming is a highly artistic endeavor 363
上一篇: 读数据自助服务实践指南:数据开放与洞察提效10数据权限治理服务
下一篇: 读数据自助服务实践指南:数据开放与洞察提效12数据转换服务
躺柒
博客等级 码龄4年 7004粉丝 1321原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值