初创公司大数据平台的选型和进化心得

2026年AI Agent平台选型决策指南:技术架构、安全合规与场景适配 AI Agent已从实验性概念演进为支撑企业核心业务的智能操作系统,其本质是具备目标导向、工具调用、自主规划与持久记忆能力的软件实体。理解其底层原理——如LLMOps闭环、受限自主架构、多模态知识编排与语义级系统集成——是评估平台价值的前提。技术价值体现在生产就绪度(日均5万+调用、等保三级通过)、治理能力(Prompt版本管理、RBAC权限网关、全链路可观测)与工程可控性(私有化部署、模型热替换、YAML工作流编排)。典型应用场景覆盖智能客服、政策问答、设备预测性维护及电商实时比价等,尤其在金融、政务、教 阅读详情


作者简介:张申竣,魔窗联合创始人兼首席技术官,互联网技术联盟ITA1024讲师团成员。毕业于上海同济大学计算机系,超过10年的软件和互联网行业研发经验。曾在HP、SuccessFactors、EMC等500强企业从事企业级SaaS平台的研发和性能调优,拥有深厚的企业级SaaS服务和移动互联网的背景。

DSC_1697.JPG

魔窗简介:作为全国独创品类的App用户增长引擎,魔窗(MagicWindow)整体解决方案不仅能提供最好的增长工具,同时配套增长联盟(最优秀的创始人联盟)及生态连接器服务,帮助App创业者一站式地解决运营效率及增长问题。魔窗增长工具包含多个典型功能模块,如硅谷最热门的企业级深度链接(Deeplink)解决方案-mLink技术,App动态运营位管理,内容分发和服务分发平台,App活动引擎以及跨App Store渠道分析等,帮助创业者以接近免费的低成本规模化获取新用户,提升2-3倍用户活跃度。App只需半小时接入SDK,即可享受魔窗全方位的增长产品及服务。目前,魔窗团队为携程、格瓦拉、美人相机、简拼、我厨网、G信、罗辑思维(得到)、网易、黑马会(学吧)、正和岛(对路)、心意点点、悠哉旅游、酒仙网、锦江集团、漫画岛、追书神器、好物、颜值、收趣、火辣健身等移动端优秀企业提供全程专业服务。

正文如下:

一、充分了解业务需求和产品所处阶段

架构师的职责永远是根据现有的资源不断做trade off,挑选出最适合公司当前状况的技术方案。所以在我们谈大数据平台选型之前,先看一下创业面临的一些挑战和优势:

1.    资源不足

2.    时间压力大

3.    没有技术上的历史包袱,选型相对自由

    

前两点是搭建大数据平台的挑战,最后一点是优势。对于大部分创业公司而言,这三点挑战和优势始终存在,但是业务特点随着公司的发展会有相应的变化,一般而言我们可以把创业公司的发展分成下面几个不同的阶段:

  • 产品验证阶段:

  • 产品成熟阶段:

  • 业务增长阶段:

下面就结合魔窗的发展经历谈一下围绕这三个不同阶段,魔窗的大数据平台的发展历程。

首先说明一下我们大数据平台的业务需求:

计算由我们的移动端SDK采集过来的包括,日活,应用打开次数,流失用户,回流用户等移动端监测的常用指标。

因为我们是提供基于Deep Link的一系列应用唤醒服务,所以我们还需要监测,从投放在各个渠道的基于DeepLink生成的短链的曝光,安装转化率。

我们还提供各种营销活动的制作和投放,所以还需要监测营销活动的曝光率。


二、产品验证阶段

先看一下这一阶段的业务特点:

1.      数据量很小,用户最多只有几十个种子用户,整个监测采集到的数据规模根本不能称作大数据。

2.      我们所计算的统计指标也无法确定对用户是否有真正的帮助,很可能整个功能会根据市场反馈最后被砍掉。

    

这种情况下,我们首先考虑的是要尽量缩小产品验证的成本,所以技术选型的原则很简单,端到端跑通功能,设计和实现上越简单粗暴越好,不需要存在技术积累,被砍了也不可惜。所以这个时候架构的总的原则是保证能够最快速迭代,推倒重来也没关系。

我们的整个计算平台的架构是这样的:

1.png

     

事实上这个都根本不能称作是大数据计算平台,只是一个包含了数据采集,数据计算脚本和数据展示的Java应用,拿目前流行的micro service化来说,这个就是一个micro service 的反例,一个monolithic的应用。

但是非常合适验证产品,利用一些一站式开发框架,修改业务非常简单,MySQL的结构化特点使得计算脚本非常容易。这个架构大约支撑了我们3个月的时间。


三、产品成熟阶段

大约3个月后,我们的产品逐渐成熟稳定了,种子用户也越来越多,此时我们的业务特点发生了变化:

1.      计算指标相对稳定,及时加指标也是基于原有的采集点的计算。

2.      有一些流量大一点的种子用户进来了,数量也越来越多。

3.      计算上分为了实时计算和离线计算这两种需求。

撇开MySQL计算性能的问题不谈,这个时候光是采集数据就会经常造成MySQL连接失效,于是我们在不断优化MySQL服务器端和客户端连接参数的同时,开始了真正的大数据平台的架构。

这个时候的架构有一个总的原则就是可持续迭代,因为产品一旦稳定成熟,技术上就承受不了推到重来的代价了,在这个前提之下我们的架构基于以下原则:

1.      采集端保证大吞吐量。

2.      在存储和计算节点出问题的情况下,保证在一段时间内采集到的数据不会丢失。

3.      性能可以通过Scale Out解决,并且易于做Scale Out。

4.      DevOps简单,能够方便的监测和预警。

下面是基于以上原则我们最后的架构:

2.png

 

数据采集

采用Nginx没有什么太大的争议,异步非阻塞,保证大吞吐量


数据暂存区

这里和一些传统的监测架构有所区别,我们并买有采用把Nginx的日志当数据暂存区的办法,而是直接用了Kafka,好处在于:

1.      比起磁盘IO, Kafka的吞吐量更大,并且提供了异步写入的方法,保证Nginx采集到的数据能够最及时的进入数据暂存区。

2.      消息队列本身就具有分布式的一些特性,比如支持Failover保证高可用,数据可以存放多份,Partition机制使数据的写入和加载更高效。

3.      消息队列天生能解决不同种类监测数据区分的业务问题(比如Topic)。

4.      比起日志,利用Kafka的API能够方便的处理一些数据续传的问题,比如如果存储节点崩溃了,仅仅利用日志是很难知道下次应该从那条记录开始续传的,Kafka就可以利用客户端保存的Offset(实际上我们每个Kafka客户端的Offset是保存在Zookeeper中的)做到。

 

数据传输

当时在两种方案里摇摆,一个是Flume 还有一个是Spring XD,最终选择Flume的原因在于:

1.      轻量级,使用简单,有大量的source和sink可以用。

2.      能被CDH托管(Spring XD不能被CDH托管,但是可以用yarn做资源调度)。

但是这个选择最终造成了后期的一些困扰,之后会提到。

 

数据存储计算

离线计算

Spark+ HDFS的模式相信已经被大家所熟悉,下面之谈一下我们对于Spark的优化心得:

1.      了解应用中的RDD的partition,执行中的stage情况,避免过多小任务。

2.      尽可能程序中复用RDD,如果多次使用,考虑做cache,根据实际情况选择合适的持久化策略。

3.      必要时候使用broadcast 和 accumulator。

4.      根据自己的作业具体情况结合系统资源监控调整主要资源类参数,例如  num-executors,executor-memory,executor-cores和spark.default.parallelism等。

5.      如果允许,建议尝试官方推荐的Kryo。

6.      对于jvm,, 通过打印GC信息了解内存使用情况,调整相应参数。

 

实时计算

我们又把实时计算拆分成了流式计算和针对特定时间范围内的全体数据集合的实时计算。因为对于像用户留存这样的指标,根据回溯历史数据去做计算是相当困难的,采用流式计算的话会简单很多,我们根据我们的业务特点也并没有引入Storm或者Spark Stream这样的流失框架,而仅仅是在Flume传输数据的过程中,简单地利用HBase做了流式计算。

下面我们将解释一下我们是如何利用HBase来做用户留存率这一指标的计算的。

    

留存(https://en.wikipedia.org/wiki/Churn_rate)计算,如果使用传统基于历史数据集的查询非常复杂,我们转换思路,采用了流式的复杂写,简单读的方式。

基本思路如下:

记录设备的首次和上次访问时间 

3.pic.jpg

为各租户定义需要计算的留存区间,例如5日留存,7日留存,2周留存,1月留存等,例如某租户tenant1 ,选择配置为计算首日,5日,7日和3月留存。

那么该租户所属的某个app(source App)发送的一条类似如以下的event,tenant1|deviceId1|timeStamp1|action1 ,应用会做以下操作:

1.      如果是新deviceId,则上表中新增访问记录。

2.      如果不是,例如本例中的deviceId1, 计算距离上次访问时间间隔(以天计),(timeStamp1-pt1)=2day,更新上表中的previous access time。

3.    通过CAS incr. 更新以下留存记录, 如果跨天了,表示这个设备的用户就是留存用户。如果跨1天,表示1天留存,跨3天,表示3天留存,依次类推。这是天的留存,周的留存根据Previous access time判断是否跨周,道理相同。

其他如流失和回流用户基本计算方法比较接近,细节处理各异。

4.pic.jpg

对于特定时间范围内的全体数据集的实时计算,我们选用了Elasticsearch作为实时计算的集群,原因如下:

1.      数据结构基于Json,因此是半结构化的数据,易于计算。

2.      基于我们的测试,查询的response time基本能够随着节点的增长线性降低。

3.      非常容易做Scale Out,非常容易通过参数设置调整数据备份和Partition的策略。

4.      支持查询的模板化,使查询和客户端代码解耦。

5.      包括查询,管理在内的所有功能API化,易于运维。

6.      插件丰富支持从其他数据源双向导入数据。

为什么选择CDH

我们曾经接触过的几个Hadoop 发行版 CDH,IDH(Intel),HAWQ(Pivotal),Hortonworks。

之前已经谈到,在选型里面我们比较关心的是DevOps,因为到目前为止我们还没有专职的运维,所以需要最大限度的利用已有工具提升运维的效率,在这一方面CDH是最强的,它的管理工具提供了安装,维护,监测,预警等一系列帮助运维的功能,节省了我们维护的很多时间。

IDH的特点是在HBase提供了LOB的类型,对二进制存储有帮助,使用特殊的存储类型避免发生频繁的Compacting。同时还优化了Hive计算的性能使相关数据尽量在同一region里。这几点和我们的需求毫无关系,而且Intel已经战略投资Cloudera,之后会把IDH的功能逐步移入CDH。

HAWQ,最为PivotalHD的基础,HAWQ最大的特点是在于它实际上是一个MPP架构的数据库,提供了基于HDFS之上的SQL支持。3个Data Node的情况下,上亿级别的包含group by聚合以及SQL子查询的复杂查询响应在10秒左右。所以HAWQ非常适合异步的近实时查询,但是我们也没有这个场景。不过用HAWQ可以把开发计算任务的成本几乎降到0是非常具有吸引力的。

Hortonworks,各方面和CDH很像,但是管理工具不如CDH强大。

 

四、业务增长阶段

随着BD的铺开,接入的客户越来越多,随着数据量的增长,我们发现了在产品成熟阶段设计上的许多问题,但是因为之前的架构原则是可持续迭代,所以问题都发生在局部的某些点上。

1.      没有用到任何序列化技术,数据存储是简单粗暴的文本格式,这样会导致两个问题:

a)      当数据种类增加时,计算任务会产生大量join,既增加计算的复杂度,又影响性能。

b)     计算脚本和数据格式严重耦合,脚本任务取字段依赖于该字段在文本文件中的位置,增减字段需要评估所有job的影响。

5.pic.jpg

3.      Flume再往HDFS写入时,无法保证一个partition一个文件,往往会被打散成许多小文件,Spark的计算性能和Namenode的性能对小文件的数量严重敏感。

4.      采用Spark Standalone,一个节点只能起一个executor,job 只能顺序一个个执行。

5.      被CDH 托管的Flume 一台机器只能使用一个Flume 节点。

针对这些个问题,我们又逐步进行了一些优化:

1.      录入HDFS的文件采用Arvo的格式,保证采集到的一条完整数据可以存储在同一个文件中,不用拆分,摒弃了join。另外基于Schema的数据,使得计算Job的语义更容易理解,可维护性更好。

2.      在离线计算任务之前,我们先回跑一个脚本将同一个partition下产生Flume产生的文件给合并,大大提升计算性能。

3.      从Spark standalone 切换到Spark Yarn。这样做的好处在于:

a)      统一了我们的资源调度平台;

b)     Yarn会自动优化数据的存储和计算发生在同一地域的问题(同一台服务器,同一台机柜);

c)      我们而言比起spark standalone 最大的好处在与每个节点起的executor的数目可配,不同的job可以并行执行。

4.      Yarn本身作为一个资源调度平台的特性先不谈,对我们而言比起sparkstandalone 最大的好处在与每个节点起的executor的数目可配,不同的job可以并行执行。

 

五、大数据平台的DevOps

团队的特点:只有一个兼职的运维。生产环境的运维由这个兼职的运维,我们的架构师和我本人负责。所以不可能花太多人力在运维上,因此我们必须保证监控,调试,重新发布的自动化程度,这也是我们选择CDH的一个很重要的原因。

另外我们还单独开发一个监测和重启Spark任务的管理工具,而这个工具又是基于我们自主开发的离线任务框架来进行监测的。

这个工具包括一个web console, webconsole会通过JMX去控制job的基本操作,同时提供对已执行过的job的信息访问,这些数据存储在mysql中,通过Job Repository服务访问。

5.png

六、总结和心得

从我们的平台发展经历来看,在初创公司做大数据平台的选型,最重要的有两点:

1.      产品目标导向,不同的阶段利用有限的资源采集不同的架构策略。

2.      无论何种架构策略, DevOps始终是架构选型的一个重要考量,因为它直接影响到你如何评估和调整架构。

(本篇文章整理自张申竣5月26日在『ITA1024大数据技术精英群』里的分享实录:初创公司大数据平台的选型和进化心得 。)

WPF、WinUI 3、MAUI 桌面开发选型实战指南(2024实测) .NET桌面开发框架选型本质是技术生命周期与工程交付能力的权衡。WPF依托DirectComposition硬件加速与成熟MVVM生态,提供高稳定性和深度Windows集成;WinUI 3基于WinAppSDK突破沙盒限制,支持原生API调用与Windows 11新特性;MAUI则以跨平台共享业务逻辑为核心价值,但桌面端仍需WinUI 3底层支撑并面临DPI适配、WebView2兼容等现实挑战。三者差异不在语法表象,而在于渲染架构、部署模型与调试工具链——WPF适合企业内部系统快速交付,WinUI 3适配S 阅读详情

相关推荐

AI产业黑洞效应:资源集中下的工程化落地指南

人工智能已从概念验证阶段迈入深度产业融合期,其核心演进逻辑不再是技术单点突破,而是模型、数据、场景与工程四层能力的系统性咬合。所谓‘AI黑洞’,实指算力成本收敛、数据飞轮增益、工程化隐性壁垒和场景知识深度绑定四大结构性力量共同形成的高密度演化态——它不意味着泡沫破裂,而标志着行业进入低逃逸门槛、高能量转化效率的成熟阶段。对制造业、金融、医疗等垂直领域而言,关键不在是否采用AI,而在能否在真实产线中实现API调用量持续增长、720小时无故障运行、客户主动扩容等硬指标。本文以工业质检为切口,揭示轻量模型分区检测

chuanggangbo5551的博客 547

大数据项目学习(一)

采集:Flume/Kafka/Sqoop 存储:Mysql/Hasoop/Hbase 计算:Hive/Tez 查询:Presto/Druid/Kylin 可视化:Superset 任务调度:Azkaban全流程调度 集群监控:Zabbix 元数据管理:Atlas 脚本:Shell 数据仓库 业务数据:在处理事务过程中产生的数据(存储在mysql中,用Sqoop处理到数据仓库中) 用户行为数据:用户与客户端产品交互过程中产生的数据,比如页面浏览、点击、停留等(日志 以文件形式存储,用Flume处理到数据仓库中

qq_43072699的博客 5135

Power BI Copilot在Microsoft Fabric中的实战应用与避坑指南

自然语言查询是现代BI工具的核心交互范式,其本质是将业务意图转化为可执行的数据逻辑。Power BI Copilot依托Microsoft Fabric统一元数据、实时权限与弹性算力三大底座,实现DAX生成、报表构建与数据解释三大能力闭环。它并非替代分析思维,而是将传统需数小时完成的建模调试、视觉设计与知识交接压缩至分钟级,显著降低DAX学习门槛并提升协作效率。典型应用场景包括业务分析师的即席洞察、数据工程师的代码辅助及新手的零文档上手。本文聚焦Fabric环境下Copilot的原理边界、实操路径与7大高发

weixin_34348805的博客 428

大数据平台技术选型

大数据平台的技术选型是一个复杂的过程,需要考虑多种因素,如数据量、数据类型、处理速度、成本预算、团队技术能力以及未来扩展性等。

youziguo的专栏 1785

AISMM-DevOps协同评估框架V2.3:构建AI赋能研发效能的度量体系

在软件工程领域,DevOps通过整合开发与运维,强调自动化与协同,已成为提升研发效能的主流实践。其核心原理在于建立快速反馈循环,实现持续集成与持续交付。随着AI技术的普及,如何系统性地评估AI在研发全链路中的集成度与价值产出,成为工程实践的新挑战。这催生了AI软件成熟度模型等评估框架,其技术价值在于为团队提供数据驱动的洞察,避免AI工具投资的盲目性,并指引能力演进路径。应用场景涵盖从智能需求分析、人机协同编码到智能测试与运维的完整DevOps闭环。本文聚焦的AISMM-DevOps协同评估框架V2.3,正是

474

Pipeline本质:可复现、可验证、可协作的自动化执行流

Pipeline是现代软件工程中实现持续集成与交付的核心范式,其本质并非简单脚本或工作流,而是由明确输入、确定性转换和结构化输出构成的原子化执行单元集合。它基于输入即契约、阶段即事务、输出即产物、元数据即生命线四大原则,保障执行的可复现性、可验证性与跨团队协作可靠性。在CI/CD、AI模型训练、IoT固件发布等场景中,Pipeline通过强隔离环境、结构化Artifact传递和深度可观测性,将‘人脑操作序列’转化为‘机器可解析、可审计、可回滚的指令图谱’。理解Pipeline与Script、Workflow

weixin_33980459的博客 461

大数据平台的分类与选型指南

SPark体系中的 Spark Streaming严格意义上属于批处理计算框架,准实时,基于内存的计算框架,性能可以达到秒级,大数据除了实时计算之外,还包括了离线批处理、交互式查询等业务功能,而且实时计算中,可能还会牵扯到高延迟批处理、交互式查询等功能,就应该首选Spark生态,用Spark Core开发离线批处理,用Spark SQL开发交互式查询,用Spark Streaming开发实时计算,三者可以无缝整合,给系统提供非常高的可扩展性。由于不同平台侧重的功能不同,平台的性能也就有很多需要考察的方面。

cdfunlove的博客 2407

ContE与实体类型嵌入:从语境感知到类型认知的技术演进

实体类型嵌入是自然语言处理中实现语义消歧与知识推理的关键基础,其核心在于将非结构化文本中的实体映射到可验证、可对齐、可推理的类型空间。不同于仅依赖上下文统计建模的ContE(上下文实体嵌入),类型嵌入强调静态语义骨架与层级约束,解决‘识词不识义’这一工业级NLP长期痛点。技术价值体现在提升问答系统准确率、增强知识图谱节点可推理性、支撑跨源类型对齐等关键场景。本文聚焦ContE向类型嵌入演进的工程路径,涵盖类型投影层设计、层次感知损失函数、原型向量构建及低延迟服务部署,为算法工程师、知识图谱构建者与NLP研究

weixin_30628801的博客 337

大数据如何进行技术选型?

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号。

huxian1234的专栏 1374

大数据平台技术框架选型分析

大数据平台技术框架选型分析,是硬件软件的选择,组件的选型

手把手教你编写I2C读写EEPROM代码(驱动层实现)

从底层寄存器配置到时序控制,详解如何编写可移植的I2C读写EEPROM代码,覆盖起始信号、地址帧、数据收发及ACK应答等关键环节,确保在STM32、ESP32等主流平台稳定运行,真正落地i2c读写eeprom代码需求。

weixin_35756130的博客 506

[005]大数据

[005]大数据 [005]大数据2017年3月5日3:011. 数据流水线任务智能调度系统实践2. 基于分布式架构的大数据商业建模实践3. 斗鱼实时计算平台的演进4. 打造又快又准的广告分析系统5. 雪球大数据体系实践6. 机器学习在OTA酒店服务的应用7. 海量日志实时分析平台8. 大数据处理和统一任务调度系统优化9. 大数据平台架构和关键系统实现10. 美团大数据平台...

weixin_30832351的博客 87

从ISO 17987到SAE J2602:LIN一致性测试标准全景解读与CANoe实现

本文深入解析了从ISO 17987到SAE J2602的LIN一致性测试标准技术演进,详细对比了两大标准体系的技术差异,并基于Vector CANoe平台演示了如何构建符合最新行业要求的自动化测试方案。文章重点介绍了SAE J2602标准的三大改进点,包括唤醒特性、传输层协议和诊断服务的增强测试要求,并提供了CANoe测试环境配置、测试模块集成及测试案例解析的实战指南。

app77的博客 334

GovTech实战指南:从技术选型到信任构建的开发者视角

在数字化转型浪潮中,政府科技(GovTech)已成为提升公共服务效率与透明度的关键技术领域。其核心原理在于利用数字技术重构政府业务流程,通过微服务、云原生等现代架构实现系统解耦与弹性扩展。技术价值体现在能够大幅降低行政成本、优化公民体验,并推动数据驱动的科学决策。应用场景广泛覆盖政务服务门户、行政审批自动化、智慧城市治理等。本文聚焦GovTech实战,深入探讨在‘绿地’与‘棕地’不同市场下的技术选型策略,以及如何通过‘信任量子’策略突破项目壁垒,为开发者提供从遗产系统集成到AI落地的全链路实践洞察。

weixin_32956805的博客 303

vscode使用continue插件连接LM studio的模型

本文详细介绍了如何使用VSCode的Continue插件连接LM Studio模型。主要步骤包括:在LM Studio中加载模型并设置相关参数,启动API服务,修改Continue配置文件以集成LM Studio模型,并进行测试以验证连接是否成功。通过这些步骤,用户可以将LM Studio中的预训练模型与VSCode的Continue插件无缝对接,实现高效的自然语言处理和编程辅助功能。

weixin_43590837的博客 8628

Windows10检查Cuda和cuDNN是否安装成功?

简介:根据上篇博客已经完成了CUDA和cuDNN的安装步骤,完成对其的安装。下面将来检查它们是否安装成功。 1 .首先win+R进入CMD,在命令行输入nvcc -V,如下图所示,则表示cuda已经安装成功。 2 .进入到cuda的安装路径,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite,找到如下两个.exe文件: 首先执行:deviceQuery.exe,查看是否出现如下界面: 然后执行bandwid

jhsignal的博客 14万+

魔窗-企业级Deeplink解决方案,你的App增长引擎!

用低于原来1/5的价格甚至免费获取用户,大幅提升用户体验(NPS增长50%),3-10倍回流、唤醒、活跃及转化率提升,构建新生态。

magicwindow的博客 2104

【WRF理论第十五期】WPS中输入geogrid二进制格式

WPS中输入geogrid二进制格式

WW、forever的博客 1078

Matplotlib、Plotly、Manim选型指南:按输出形态决策

数据可视化不是比工具功能强弱,而是匹配最终交付形态的技术适配问题。从静态出版物(PDF/SVG)、交互式网页(Web仪表盘)、到教学动画(时间序列视频),不同输出形态对矢量精度、JavaScript运行时依赖、帧级时间控制提出根本性差异要求。Matplotlib胜在LaTeX兼容与像素级控制,Plotly强于响应式交互与Dash集成,Manim专精数学公式动画与物理过程演化。当科研论文需嵌入高保真矢量图、业务看板要支持触控滑动、教学视频须呈现傅里叶分解动态过程时,工具选择就不再是偏好问题,而是输出形态驱动的

weixin_34354173的博客 113

天龙八部TLBB系列 - 网单服务端各目录文件说明【超详细】

专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等) --- 天龙八部服务端各目录详细说明

空名先生 7623

玩转Docker小游戏项目系列: Docker部署中国象棋网页小游戏

玩转Docker小游戏项目系列: Docker部署中国象棋网页小游戏

jks212454的博客 439

金融科技八大核心趋势:从开放银行到AI风控的实战解析

金融科技(FinTech)是技术驱动金融创新的核心领域,其原理在于利用人工智能、大数据、云计算等技术重构金融服务流程,提升效率并优化体验。这一融合的技术价值在于降低服务成本、扩大金融普惠性,并增强风险管控能力。其应用场景广泛覆盖信贷风控、智能投顾、支付清算及合规管理等环节。随着用户主权意识觉醒和监管要求趋严,开放银行和监管科技(RegTech)成为关键实践方向,通过API开放与智能化合规系统,推动金融业从封闭走向生态化协作。本文聚焦2020年以来的八大趋势,深入探讨区块链在供应链金融中的信任基建作用,以及R

weixin_30896825的博客 470

Unet++改进33:添加ConvolutionalGLU(2024最新改进方法)|紧凑的网络结构和高效的运算

由于残差连接的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉变形模型往往不能形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,在本文中,我们提出了聚合注意力,这是一种基于仿生设计的令牌混合器,它模拟生物中央凹视觉和连续眼运动,同时使特征映射上的每个令牌具有全局感知。此外,我们结合了可学习的令牌,与传统的查询和键交互,这进一步多样化了亲和矩阵的生成,而不仅仅依赖于查询和键之间的相似性。我们的方法不依赖于堆叠进行信息交换,从而有效地避免了深度退化,实现了自然的视觉感知。

AIcurator的博客 683

AI副驾驶如何重构高管决策:从执行工具到战略共治体

AI副驾驶(AI Copilot)正超越传统自动化概念,成为企业高层决策链的核心协同节点。其本质是基于多源异构数据融合、可解释性推理与人机权责共担的新型决策范式,解决的是时间尺度坍缩、认知带宽瓶颈与责任溯源刚性等现实约束。不同于黑箱大模型或通用AI平台,真正落地的AI副驾驶强调领域知识注入、决策过程可审计、建议结果可归因,已在财务预测、供应链风控、组织效能诊断等关键场景实现毫秒级响应与±2%级误差控制。它不替代管理者,而是将C-Suite职能从经验判断升维至价值仲裁与伦理把关——这正是当前企业数字化转型中,

anheku1562的博客 538

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

android 蓝牙通讯demo

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

数据仓库演进史:从OLTP到湖仓一体,八个阶段解析技术架构变迁

数据仓库作为企业数据管理的核心,其发展历程深刻反映了数据处理技术的演进。从早期的OLTP系统到现代智能数据平台,其核心始终围绕如何高效集成、治理和服务数据以支持决策。维度建模、ETL/ELT流程、数据湖、云原生等技术概念,共同构成了数据仓库的技术基石。随着数据规模与实时性要求提升,流批一体架构与湖仓一体范式应运而生,旨在平衡灵活性与治理能力。如今,数据仓库正朝着智能化与自服务方向发展,通过统一语义层和增强分析,降低使用门槛,赋能业务决策。本文基于数据仓库的八个关键发展阶段,深入剖析了其技术架构的变迁与选型要

weixin_30616969的博客 511

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 致企业级服务创业者:读完这个成不了独角兽,但能少犯错|红沙发
下一篇: App不想成为创业困兽?那就善做杠杆,疯狂连接吧!
魔窗
博客等级 码龄11年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值