开发者驱动的软件公司,如何赚取万亿美元?

人工智能学习之机器人路径规划优化 A* AStar 人工智能 机器人路径规划优化 阅读详情

431905312e11dc6908b569c7bf984cd9.gif

【优快云 编者按】在过去二十年中,诞生了两个价值数万亿美元的企业软件行业:SaaS(Software as a Service,软件即服务)软件和公有云。如今,第三个以开发者为核心的万亿美元软件浪潮正在来袭,企业该如何抓住机遇在这个潜力无穷的新市场占据一席之地?

作者 | Glenn Solomon       责编 | 张红月

出品 | 《新程序员》编辑部

继SaaS软件和公有云之后,企业软件行业发展依然迅猛,我们也悄然进入了下一个万亿美元软件浪潮的早期阶段——“由开发者驱动的软件行业”,这些公司构建的技术使软件开发和数据管理过程更容易、更快、更安全并且完全民主化。

在这个以开发者为核心的新软件浪潮中,那些拥有足以推动软件开发灵活协作的产品及平台的公司,极有可能在未来几年创造巨大的市场价值。其中,建立在开源基础上的软件公司更是具有成为数十亿美元级别企业的潜能。

种种迹象表明,下一个万亿美元级别的软件浪潮来势汹汹并已初见雏形。

731ab10a6e6b9341dc5c5a1ff146515a.png

Glenn Solomon,GGV纪源资本管理合伙人,Glenn Solomon于2006年加入纪源资本担任管理合伙人,关注企业服务、云和网络基础设施投资。

新市场规模已达数十亿甚至数百亿美元

在深入分析这个新软件市场之前,我们不妨先回顾SaaS软件和公有云是如何成功打造出数万亿美元的企业软件市场。

SaaS

提到SaaS软件,本质上真正引领了这个行业发展的标志是Salesforce首次公开募股(IPO)。2004年成功上市的Salesforce,市场估值刚超过10亿美元的水平线;但将进度条拉到现在,Salesforce的市值已接近2000亿美元,其他SaaS公司(如Shopify、Workday、DocuSign和Veeva)也紧随其后,市场估值均超过了300亿美元。

究其原因,是这些SaaS公司将购买和使用软件的方式进行了调整,允许客户按月支付订阅费,帮助用户摆脱了昂贵的软件安装费、繁琐的软件使用许可和无尽的升级周期,用户的使用体验升级自然也就带动了公司的收益。根据BVP纳斯达克新兴云指数,提供SaaS解决方案的新兴上市公司的总价值目前已超过1.7万亿美元。

公共云

在SaaS出现的同时,亚马逊推出了其公有云服务AWS,开创了云计算的时代。众多软件公司和SaaS供应商纷纷涌向“云”,将应用工作负载大规模迁移到由AWS、Microsoft Azure和Google Cloud Platform管理的公共云上。

在过去的14年中,Amazon、Microsoft和Google的年收入累计超过800亿美元,并全部跻身全球四大最有价值公司之列。此外,这三家公有云平台的总价值目前已超过1万亿美元,并且随着企业上“云”的趋势,这个数值还在不断增加。

在SaaS和公有云的引领下,一个价值上万亿美元的新行业正在围绕开发者驱动软件出现。

7646539bd974009a9fca919fc99fb909.png

图1 市值和股价上涨领先的以开发者为核心的上市软件公司(图源:GGV纪源资本)

为什么会出现这种趋势?这对于整个企业软件行业意味着什么?

在此,以Domino(达美乐披萨的食品公司)的转型为例,或许你就不难理解为何这个新软件浪潮势不可挡。

十年前,Domino的股价在每股12美元左右,现在却大约是380美元一股,这三十多倍的差距并不是因为人们点了更多的达美乐披萨,而是Domino使点餐变得更加方便智能。

自2010年以来, Domino从最初的电话订购系统过渡到如今基于应用程序的点餐系统,人们只需单击或滑动即可添加商品,订单平均规模一直在稳步攀升,目前Domino超过70%的销售额都是在网络或移动设备上完成。因此,Domino在后端投入大量资金来升级其供应链基础架构,并创建基于Web的平台以支持特许经营者,而这一切创新的方式,都需要软件开发者的支持。

不仅是Domino,Capital One、Tesla、Airbnb和Nike都是在过去十年中迅猛发展的公司,它们有一个共同点——本质上已经成为了科技公司。在每家公司转型为科技公司的过程中,势必都需要开发者去创建无穷无尽的软件来推动其发展。因此,让开发者能够快速协作,以数据驱动、支持高效构建应用程序的产品将成为下一个数万亿美元的市场也就不足为奇了。

在这种趋势下,以开发者为核心的公司自然将赢得开发者的青睐,可能在未来十年形成下一个万亿美元级别的新产业。就目前看来,这个趋势已经初见锋芒。经过多年的发展,这些由开发者驱动的软件公司总市值已达数十亿甚至数百亿美元。

e884d5a0ad2507bfff9f9dd1a22fc9ee.png

图2 以开发者为核心的独角兽公司的最新估值(图源:GGV纪源资本)

此外,在过去一年特殊环境之下,当传统的开发工具市场萎靡不振时,这些软件公司的产品却大放异彩。它们不仅可以轻松在线上获得,还能提供价格低廉或免费的服务。并且,它们大多是开源的,有开发者自主贡献和改进功能,通常以API或SDK的形式提供,因此用户可以方便地借助它们来实现想要的功能。

说到这里,关于这个数万亿美元的新市场,就有一个矛盾而又现实的问题赫然摆在了眼前:如果开发者都偏爱免费产品、开源工具和API,那这些由开发者驱动的软件公司将如何赚钱?

45c2de7b5aa086a29f720c9201712445.jpeg

本文节选自《新程序员001:开发者的黄金十年》

三种运营模式攻入开发者壁垒

众所周知,在公司中开发者几乎不掌控资金预算,并且大多数也更喜欢免费软件。那么对于以开发者为核心市场的公司要如何获得百万美元的收益呢?答案是:首先要赢得开发者心灵和头脑的双重偏爱,再尝试向他们销售。

想要打造一个完全面向开发者的软件绝非易事,这个过程需要时间。许多初创公司通常都缺乏赢得全体开发者所需的耐心与决心,但有时候要“耐得住寂寞才守得住繁华”。在未来十年间,虽然赢得开发者的喜爱可能要花费数月甚至数年的时间,但这对创建一个价值数十亿美元的软件公司而言至关重要。

在产品赢得开发者的心后,有三种商业模式可以将开发者对其的喜爱转化为商业价值:免费增值、基于API的服务以及商业开源。

免费增值

免费增值,即人们可以免费使用某个产品的轻量级版本(或先试后买),以达到提高使用率的目的。这个商业模式的目标就是使人们获得愉悦的使用感,进而将他们发展为忠实用户。也就是一旦开发者已经对产品产生了依赖,下一步就是通过优秀的付费功能引导他们升级为付费客户。

Slack公司就是一个良好运用免费增值模式的典范。Slack在2014年推出了一款软件开发项目协作平台,从那时起,该平台的基础应用就一直是免费的。即便到了今天,大多数公司也都是先使用Slack免费版,然后再升级到付费版以获取某些额外功能,例如消息的无限存档以及与第三方应用的集成。

不过免费增值模式有利也有弊。它最大的优点在于,如果大量开发者使用免费版产品,那么企业将有机会建立起一个庞大且高参与度的客户群。但最大的缺点是,说服开发团队升级到付费模式有时候很难,而且竞争对手们会对软件进行抄袭,同时免费提供更多功能,也就削弱了这种模式的能力。

除此之外,免费增值模式还有个小窍门,那就是要从一开始就考虑变现的问题,而不是等到产品已经拥有数百万用户的时候再去决定把哪些功能商品化,并且要将用户反馈列入未来升级的规划中,尤其是在针对开发者这一目标群体时。因为开发者一般不负责资金,因此必须提前把需要购买的产品详情对接给预算负责人,而一旦发现有更合适更便宜的产品,自然就及时止损,择优而去了。

API

灵活的API变现模式广受开发者的青睐。有了API,开发人员只需插入几行代码,即可在开发的任何产品中添加付款或消息处理等功能。大多数API变现模式都是基于服务的,用户要么支付订阅费,要么支付基于消费或交易的费用才能将API整合到他们的产品中。

那么是什么让一向喜欢免费软件的开发者心甘情愿地为API付钱呢?相信大家都了解开发者的工作压力大到“头秃”,经常需要长时间工作才能如期发布产品。在如此重压之下,开发者们一直在寻找安全可靠的捷径,而API恰恰就是这种捷径。通过使用API模式成功的企业也有两家,一是提供消息传递API的Twilio,二是提供支付处理API的Stripe。

API型软件公司会收取其产品的服务费,主要分为以下

三种类别:

(1)订阅型:用户每月支付费用;

(2)消费型:用户每次调用API时都要支付费用;

(3)交易型:从用户通过API完成的每笔交易中抽取一定百分比的费用。

这些类型的收入都十分稳定,因此只要拥有正确的API模式,公司就能实现数百万的常续性营收。然而,API模式的关键在于要打造出开发者们的首选API,想要实现这点就要做到:密切聆听开发者的需求,不遗余力地在论坛、大会以及其他开发者社区中大力宣传其API的优点及学习路线。

但同样API模式也存在一定风险,因为有些开发者最终可能会决定放弃第三方API,直接在自己的产品中搭建同样的功能。虽然这种情况较为少见,但当API费用飙升,其服务价值与成本不符时,发生的可能性会增大。显然,不断迭代和改进API对于任何想要长期成功的API型软件公司而言都是至关重要的。

商业开源

与免费增值相似,大多数商业开源也都是“首先提供该软件的免费版本,然后针对高级功能或服务收取费用”,但它与免费增值的最大区别在于,其源代码可供所有人查看和使用。

商业开源模式的最大优势在于,软件开发者们非常热爱开源,因此使用开源搭建的产品时阻碍是最小的。但最大的不足在于,开发开源软件可能需要花费数年时间。软件的采用率通常依靠口口相传,而不是传统的营销手段。因此,如果想要获得足够大的用户基础,来收集有关如何迭代产品的重要反馈,需要花费很多时间。

所以,开源项目很难靠自己迅速获得用户,“把它做出来,用户就会来了”并不是一个行之有效的策略。除了在GitHub上托管项目外,宣传开源项目的有效方法还包括撰写技术博客、在技术会议上发表论文、主持见面会、参加开发者大会,以及回应社交媒体渠道上得到的反馈等等。在开源软件的商业化方面,MongoDB和HashiCorp就做得很好,其创始人与开发者紧密合作多年,使项目真正进入产品开发周期。

除了开源项目难以推广,把开源用户转变为付费用户这个过程也较为艰难,甚至比免费增值模式还要难。因为商业开源公司需要找准一个平衡,使其产品成为一个既是向所有人开放的免费协作项目,又是一款仅限付费用户使用的商业产品。

针对这种情况,使商业开源模式成功的最好方法就是完全透明化:提前计划好将要商业化的功能,并就此在开发者社区中明确交流,询问他们哪些功能或服务值得付费。

以上这三种商业模式虽然各有千秋,但要论开发者最喜欢哪种类型的软件,开源自然是当仁不让。这也是上文中提到“建立在开源基础上的软件公司具有成为数十亿美元级别企业的潜能”这句话的缘由:开源,永远是开发者最热爱的。

因此,要想在下一个数万亿美元的市场中占据一席之地,学会建立一家可以高效变现的开源软件公司绝对是最佳选择。

成功的基底:项目管理&建立社区

开源软件公司,顾名思义,自然要有王牌开源项目。对企业而言,在考虑如何赚钱之前,先决定如何构建和管理自己的开源项目才是成功的基底。

目前比较常见的治理模式是:开源公司对项目制定一个有完备计划的产品路线图,然后欢迎社区成员朝着这个目标做出贡献。但开源公司如果采用这种开放且受控的模式,则要在特性和功能开发方面施加较强的管控,并坚持路线图的首要地位。

然而这也可能引发一些问题,即“施加管控”和“控制过度”之间的这杆天平难以把握。如果社区认为某家公司对用户的需求充耳不闻,想完全靠自己来开发这个软件的话,就有可能会被看成是一家典型的“闭源”软件公司。关于这点,尽早清楚地向社区传达企业管理模式尤为重要。

企业应向广大开发者说明项目的管理方式、公司内部的项目负责人、可接受的外部贡献,以及这个项目是否受第三方基金会(例如Cloud Native Computing

Foundation或Apache Foundation)的监督。

在向大众传达了开源项目的管理模式后,公司下一步该做的就是:建立一个积极活跃的开发者社区。

这也并非易事,优质的开源社区通常需要数年的努力才能逐渐形成,在这之中公司早期创始人是创建社区的关键人物。因为开源企业家通常自己也是开发者,能够了解开发人员的心态,在围绕开源项目建立社区时,创始人就可以参加开发者大会和黑客马拉松、参与在线讨论并撰写有关项目的技术文章、带领社区成员互相分享源码中的小技巧、讨论如何使用这些技巧打造创新的应用程序等。

除了创始人的力量,建立开源社区还有最重要的一点:保持完全透明。开源社区的成员对公司来说既是合作伙伴也是宣传人员,他们会赞扬项目的优秀,会写文章分享他们如何使用代码,并为项目的技术成功做出贡献。因此公司需要对社区保持尊重,对于哪些功能将在核心开源代码中保持免费,哪些将是付费高级功能,必须完全的公开透明,以此维持开发者对其项目新功能的支持与投入。

以上这两步如果你都实现了,那么恭喜,你已经初步完成商业化开源公司框架的搭建了!接下来,也就是公司从开源项目发展到上亿美元规模中最重要的一步:选择盈利模式。

万亿美元市场形成的加速器:两种盈利模式

当前,开源公司主要有两种盈利模式:开放核心(即“Open Core”)和云服务。虽然有些公司只采用了其中一种,但大多数公司是将两种方式结合起来。

开放核心模式

开放核心模式即允许每个人都使用软件的核心源码。不过,虽然每个人都可以构建这个开放式内核,但最有效的方法还是由商业公司决定产品发展路线并把控社区提交的代码。

那些从一开始就对开源项目展开指导、管理和支持的软件公司,在后期通常会逐渐增加付费功能并从中获利。虽然公司会在免费开源的核心源码中搭建许多基础组件,但也会对其他功能进行收费,例如企业所需的安全性、合规性、协作性和高可用性的相关功能。

另外,开源公司如果想采用这种盈利模式获取成功,必须在开源的核心源码中提供极具价值的功能,以此引起开发者的关注与热情。此外,一旦决定在源码中免费提供某项功能,最好一直保持免费,否则必然引起开发者众怒,严重的话他们甚至会集体放弃这个项目。因此开源公司需尽早决定免费功能与付费功能的界限,并同步给社区中的开发者们,以避免这种情况发生。

在付费功能部分,公司则可以根据产品、客户和它服务的行业来决定。许多成功的开源公司是将一些可以优化开发者日常工作的功能放到开源代码中,从而帮助开发者更高效和快速地完成他们的技术搭建;而那些具备安全性、管理、高可用性的功能则归类于付费部分。这其实就证明了开源公司不必将开源与商业产品完全划清界限,只需将这两部分的工作透明化即可。

云服务模式

过去五年,越来越多的企业习惯于将他们的基础设施托管在公有云上,因此推动了如今第二个开源商业模式的成功发展——云服务。许多开源公司,如Confluent、Databricks、Elastic、MongoDB、HashiCorp和JFrog等,都会至少提供一项云服务。而他们提供的云服务通常仅包含最基本的功能,即只开放免费部分,随后在这一层免费服务上,增加付费功能和特性以获取收益。

云服务的优势是易于使用,具备成本效益,可以使企业不必亲自启动和管理自己的基础设施便可运行服务,同时也减轻了雇佣或培训相关员工的压力。而且云服务下,客户从免费转向付费版本的过程更加便捷流畅,因此销售付费功能的困难要小得多。基于这些优点,许多开源公司如MongoDB、Elastic和JFrog,他们的云服务都已经得到了快速发展,云服务未来的发展在目前看来也会更加强劲。

但是云服务模式也伴有挑战。例如一个开源公司选择将其项目贡献给Apache基金会,带有基金会的光环后,自然会吸引更多开发者参与到这个项目中,也相应增加了项目的知名度。但与此同时,开源公司也失去了部分从中变现的能力,因为开源基金会不受公司管理,那么公司自己配置的用来驱动云服务的运营和分析工具,就不能增添到基金会的网站中。除此之外,如果一家公司过于频繁地宣传其付费功能的优点,就会很像一家卖软件的公司,进而失去它开源的公信力。

企业软件行业正处于革命之中,下一个以开发者为核心软件浪潮也正在来临,你准备好迎接第三个万亿美元级别的新市场了吗?

作者简介:

Glenn Solomon,GGV纪源资本管理合伙人,Glenn Solomon于2006年加入纪源资本担任管理合伙人,关注企业服务、云和网络基础设施投资。

他在GGV期间主导投资了Slack(NYSE: WORK)、Zendesk (NYSE:ZEN)、Square (NYSE:SQ)、DOMO(Nasdaq:DOMO)、Pandora (NYSE:P)、Isilon (NASDAQ:ISLN , 被 EMC 收 购 ) 、 S u c c e s s F a c t o r s(NYSE:SFSF,被SAP收购)、Nimble Storage (NYSE:NMBL)、Quinstreet (NASDAQ:QNST)、Airbnb、 AlienVault(被AT&T收购)、BitSight Technologies、Coder、Conviva、CrossChq、HashiCorp、Kong、New Knowledge、NS1、Nozomi Networks、Opendoor、Restless Bandit、Unraval Data、Synack、Tray.io、VDOO和Zebrium,并帮助以上前七家公司成功上市。

本文已获作者翻译授权,英文原文地址:

  1. Why Developers Are Fueling The Next $1 Trillion Software Wave, https://www.forbes.com/sites/glennsolomon/2020/06/23/why-developers-are-fueling-the-next-1-trillion-software-wave/

  2. The Next $1 Trillion - Three Ways To WinDevelopers’ Hearts And Minds,https://www.forbes.com/sites/glennsolomon/2020/07/14/the-next-1-trillionthree-ways-to-win-developers-hearts-and-minds/

  3. Code And Community: Two Keys To Building An Open Source Winner,https://www.forbes.com/sites/glennsolomon/2020/08/13/code--community-two-keys-to-building-an-open-source-winner/

  4. Monetizing Open Source: Business Models That Generate Billions, https://www.forbes.com/sites/glennsolomon/2020/09/15/monetizing-open-source-business-models-that-generate-billions/

2fe3e5587f6e075256e3f7a9541963cb.gif

在这里插入图片描述

2020计算机专业保研夏令营面经:中科院计算所网数机试题目 计算所网络数据科学与技术重点实验室的第一阶段是机试。机试不限程序语言,要求提交源代码。 阅读详情

相关推荐

OpenVINS实战指南:从环境搭建到RGB-D相机实时建图

本文提供了一份详细的OpenVINS实战指南,涵盖从Ubuntu与ROS环境搭建、依赖安装与编译调试,到连接RGB-D相机进行实时建图的完整流程。重点解决了RealSense D435i等设备的驱动配置、话题对齐及常见问题,并分享了传感器标定与性能优化技巧,帮助开发者快速实现稳定高效的视觉惯性里程计系统。

weixin_29201313的博客 485

世界上最大的开源基金会 Apache 是如何运作的?

国际开源舞台上,中国开源力量正在增强

开源吞噬世界。 3435

华为昇腾Ascend C中级认证考试-tanh

注册昇腾社区账号后可以免费领券考试。

2600_96284887的博客 474

​Apache 软件基金会 2021 年度报告亮点解读

| 转载自:第二层思考| 作者:温铭|编辑:钱睿| 设计:马丽娜|责编:沈于蓝引言除了火爆维权、引发热点新闻,我们还应该做更多日常布道、知识普及,预防这样的事情发生。除了对于 GPL ...

开源社KAIYUANSHE的博客 1027

基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

所属子方向: UAV assisted communication 名词注释 coordinated:协调、协同 base stations 基站,公用移动通信基站,是移动设备接入互联网的接口设备,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 UAV-BS:无人机基站 cooperative-competitive game:合作竞争博弈 throughput :吞吐量,每秒比特数 bps,bits per second Determinis

skysys的研究小屋 4969

ego-planner启动参数深度解析:从配置到实战避障应用

本文深入解析EGO-Planner启动参数的配置与实战应用,重点探讨无人机自主导航中的避障性能优化。通过环境感知、运动约束和算法控制三类参数的详细说明,结合ROS和RViz工具,提供从基础配置到高级调优的完整指南,帮助开发者提升无人机在复杂场景下的规划效率和安全性。

rum55的博客 247

Apache Pulsar 为滴滴大数据运维带来了哪些收益?

Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体。该系统源于 Yahoo,最初在 Yahoo 内部开发和部署,支持 Yahoo 应用服务平台 140 万个主题,日处理超过 1000 亿条消息。Pulsar 于 2017 年由 Yahoo 开源并捐赠给 Apache 软件基金会进行孵化,2018 年成为 Apach...

DiDi_Tech的博客 7734

随机化策略——随机变量rand、约束constraint、权重dist、随机数产生示例

文章目录一、随机变量类型1.1.rand随机变量1.2.randc随机变量二、随机化约束2.1.constraint指定约束范围2.1.1.关系操作符约束(>、<、=、>=、<=)2.1.2.范围操作符约束(inside)2.1.3.权重分布约束(dist)2.1.4.条件约束(if-else; ->)三、启动随机化——randomize( )函数四、关闭或打开随机变...

Mr.翟的博客 2万+

Apache基金会及盈利模式解析

Apache软件基金会(Apache Software Foundation,ASF)是一个支持开源软件项目的非营利组织,成立于1999年。它通过提供法律、财务和社区支持,帮助开源项目健康发展。ASF以“Apache Way”为核心原则,强调共识、协作和社区驱动开发。

ITHomeZSL的博客 741

架构决策之消息中间件MQ系列六-Pulsar

一、架构

恰恰虎的博客 7254

【Dify】知识库智能检索应用

本文介绍了一个基于大语言模型的知识库检索系统,实现从自然语言提问到智能回答的自动化流程。该系统通过知识检索节点定位相关信息,利用重排序模型优化结果,最后由大语言模型生成自然语言答案。核心模型包括InternLM2-7B和BCE重排序模型。工作流程包含输入问题、检索重排序、智能生成和答案输出四个阶段,适用于企业知识管理、客户支持、教育培训等多种场景,能显著提升信息检索效率和准确性。文章还提供了相关开发文档链接,涵盖AIGC工具平台搭建、常见问题解决等内容。

Mr数据杨 1003

Apache基金会如何运行开源项目

首届360开源大会不仅邀请10多位360内部技术讲师,还特邀Apache基金会副总裁、触控未来CEO、华为和Intel等多位开源讲师共聚大会,畅聊开源!

深入剖析 YOLOv11 中的 C2PSA 注意力机制

YOLOv11中的C2PSA注意力机制在目标检测领域取得突破性进展。该机制通过跨通道分组交互和轻量级位置编码,在仅增加0.6%计算量的情况下提升mAP 1.5-2.3个百分点。C2PSA创新性地结合局部跨通道交互、位置编码和双分支并行调制,采用纯卷积实现自注意力,避免传统注意力机制的高计算复杂度。实验表明,C2PSA在COCO数据集上以微小计算代价显著提升检测性能,特别是对小目标和遮挡目标效果突出。该模块可直接嵌入YOLO架构,为轻量级目标检测提供新的优化方向。

shrgegrb的博客 3401

微软成为雅虎财经2021年年度最佳公司

微软度过了惊人的一年。这家经过近50年的经营的科技巨头于6月冲破了2万亿美元的市值大关,以此加入了苹果所在的独家俱乐部--Google母公司Alphabet也曾短暂加入过。截至12月6日,...

HJ说 876

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

廖雪峰Python教程[完整版]

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

500 万高薪竟毫不稀奇!元宇宙真要来了吗?

整理 | 于轩 出品 | 程序人生(ID:coder_life)在Meta、微软、谷歌等近期传出放缓招聘进度,元宇宙岗位需求大幅缩减后,国内的元宇宙产业却悄悄开启了招聘热潮。近日,据澎湃新闻报道,多家互联网、游戏类企业表示,计划在近期扩大元宇宙人才招聘规模,今明两年需要大量招引擎工程师和计算机系软件工程的高校毕业生。薪资方面,普遍应届生能达到40万-50万元左右,10年经验的资深工程师薪资...

优快云资讯 3515

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

何同学发明“会自己打字的键盘”,但视频画风却逐渐“离谱”…

整理| 于轩 出品 | 程序人生(ID:coder_life)UP主开始卷“键盘”了?继稚晖君发布《从零开始造“客制化”智能键盘》后,停更近四个月的何同学带着《我做了一个自己打字的键盘…》回归。素有“B站科技区顶流UP主”之称的何同学,此次视频也成功登顶全站排行榜最高第一名。在视频中,何同学不仅是自制了一个会自己打字的键盘,更是复刻了08年北京奥运会上的“活字印刷术”表演。何同学表示,自己...

优快云资讯 4031

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

“为什么中国没有Apache基金会这样的组织?”

“世界不能没有开源”,“开源正在杀死软件开发”,“开源不过是一些理想主义者的美梦”,“你开源我赞美,要我开源我不干”。关于开源,我们能聊的太多。而“中国化”的开源,却总是受到不少的质疑与诋毁。但在中国,有这样一群开源的先驱,哪怕公司不支持,也依旧在坚守。这是二叉树第四季,我们想跟你聊聊开源这件事儿。老刘并非典型的黑客。1999 年,老刘初次接触开源,当时的他已经是一位 Oracle 的高管。连接他...

cpongo5 531

座谈会:Apache基金会那些事儿

2018年10月13日下午,开源微服务项目ServiceComb的团队邀请Apache基金会高管,与国内Apache项目开发者相聚于上海。针对开发者所关心的主题进行了深入的交流。讨论问题主要包括:如何从Apache软件基金会孵化器毕业成为顶级项目对于构建持续增长的社区,有何建议?项目的提交者和PMC成员不够活跃,我应该怎么办?发版投票过程漫长,如何保持正确的发版“姿势”?如何使用开源软件进行商业化...

cpongo5 732

从用户成为“股东” —— 在 Apache 基金会的2600天

4月1日,腾讯云大数据及人工智能产品研发的专家研究员堵俊平受邀成为 Apache 软件基金会Member(Apache Software Foundation Membe...

腾讯开源 532

apache及apache基金会

http:www.apache.org Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。 主要项目有: FTP/HTTP/Mail/SQL/XML/Hadoop/HBase/Kaf

lysinely的博客 4460

对于学习apache软件基金会顶级项目源码的一点思路

ASF的开源项目,为软件行业贡献了太多好的产品和软件思维。学习ASF的项目源码能很大的提升自身的能力。程序运行在服务器上的流程;执行启动脚本(start.sh) -> 指向程序的主方法 -> 开始执行程序。所以学习其源码的入口应该在启动脚本开始。 测试环境的搭建; 我不喜欢把全部的源码倒入IDE中,我的学习(java项目)源码搭建方式是 1.创建java项目,关联Jar包 2.ja

lime_的博客 1274

apache基金会开源项目简介

项目名称 描述 HTTP Server 互联网上首屈一指的HTTP服务器 Abdera Apache Abdera项目的目标是建立一个功能完备,高效能的IETF Atom联合格式(RFC4287)和Atom发布协议(RFC5023)规范的实现。 Accumulo Apache Accumulo 是一个可靠的、可伸缩的、高性能的排序分布式的 Key-Value

静心 4981
上一篇: 涅槃:时序数据库的终局与重生
下一篇: 70%的开发者完全不懂或只了解云原生概念
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值