当技术人成长为 CEO,应该修改哪些“Bug”?

.NET开发者成长三阶:从程序员到技术人员再到做人 在软件工程实践中,'程序员'是执行者,'技术人员'是系统设计者,而'做人'则是技术价值的转化者与协作信任的构建者——这一能力分层模型源于对.NET生态长期演进的观察。它揭示了技术人职业发展的本质规律:语法熟练度决定下限,系统权衡能力决定高度,而责任感、共情力与业务翻译能力则决定职业寿命。尤其在企业级开发场景中,如ASP.NET Core中间件顺序错误、EF Core延迟加载陷阱、Minimal APIs绑定失效等高频问题,其根因往往不在代码本身,而在设计阶段缺乏对上下游协作、可观测性、异常语义的前置思考。因 阅读详情

【优快云 编者按】丛纹弨是智能交通和物流领域的连续创业者,二十年的产业技术和创业管理经验,让他成为行业资深专家。本文从智慧物流平台的真正价值为何、如何通过算法解决行业问题、技术人如何塑造产业思维,以及如何成长为创业者四个维度,深度解读了他对算法与物流产业的思考。

作者:吴军
责编:田玮靖
出品:《新程序员》编辑部

丛纹弨出生于山东威海的教师家庭。从小接触编程的他立志于从事计算机技术行业。毕业后的那三年,他一直在航天系统工作。从2007年开始,他先后两次创业,聚焦于智能交通物流领域。2016年4月,丛纹弨开启第三次创业,创办了乐卡车联。

在这里插入图片描述

丛纹弨 乐卡车联创始人&CEO

从做智能软硬件,到开辟算法调度平台,作为曾经的技术人,如今的创业者,他对物流行业的理解有了更加深入的视角。

在这里插入图片描述

本文节选自《新程序员》004,『纸质书+电子刊』已正式开售

除了解决信息不对称,“担保”才是价值

2017年对于乐卡车联是至关重要的一年。这一年,公司不仅拿到了Pre-A轮融资,到年底,丛纹弨和他的创始团队将公司业务从智能物流转向做算法调度。事实上,在成立之初,他和团队都认为技术要解决的首要问题是“信息不对称”,他们设想通过智能化改造,将软、硬件赋能,让信息可以直达司机。可进行了一段时间的业务摸索后,他发现真实困境并不在于信息,而是人的心理。“我们刚开始也研究了很多业务的智能化改造,包括电子支付、智能后视镜,一些娱乐功能等,还做了全行业首款8.8寸切割屏。虽然技术做得很好,但是忽略了行业本质。对于物流行业来说,本质需求不是结算,不是定位导航,更不是娱乐。行业最关心的问题是如何最大化地提升车辆利用率。”

在丛纹弨看来,无论是公司老板还是卡车司机,智能化功能对于他们来说只能算锦上添花,真正需要解决的根本问题是生存。对于老板来说,优化运营才能获得更多利润。而对于司机来说,更在意的是跑一趟获得更多报酬。但大部分时候,司机送到货后,返程可能就会空车。所以,解决“货在哪儿”这个问题就越发重要。

此时,就会有技术人想到:“如果把货物信息放在平台展示,司机看到之后找到货物,这个问题就完全解决了?”其实不然,因为几乎没有人会愿意把价值几百万的货物在无任何信用背书的情况下交到陌生人手里。

所以,物流需要解决的核心问题有两处:一是“货在哪儿”,二是“陌生人的信任”。货的问题属于信息披露,信任问题就深入到人的心理需求了。对于心理需求的解决,如果不刨根问底,很难触及人的内心深处,也就无法真正解决。

就这个问题,丛纹弨认为应该这样轮番设问和回答。

问:司机为什么拿不到返程的货?

答:因为没有人给。

问:那为什么没有人给?

答:因为找不到有货的人在哪儿。

问:找到货物后,就能顺利托运吗?

答:估计不会,因为委托人不信任。

问:委托人怎样才能信任?

答:需要通过第三方担保。

“所以,问到这里就会发现,第三方平台的真正价值体现在提供交易担保,而不是所谓的去‘中间化’。商业的本质就是流通的中间化,怎么可能去掉?关键是我们给这个“中介”附加了怎样的价值,从而让我们和客户达成互利共赢。千万不要相信某些平台‘没有中间商挣差价’的说法,那是给C端做宣传的。只要在平台中赋予了降本增效的价值,中介挣的就是价值赋予的合理收益。”

算法“攻克”零担货运集中度问题

除了提供第三方担保,丛纹弨也将目光聚焦在“零担货运”。“零担”对于行外人来说是个陌生概念,但它其实不难理解。和拼车业务可以通过同行共搭减少每位乘客的成本一样,“零担”是当某位货主的货不能装满一辆货车时,可以和其他批次同方向的货物凑成整车的一种拼车物流方式,不仅减少了个体运输成本,还提升了物流运输效率。

事实上,除原材料等大宗货物外,大部分货运物品都通过零担拼凑。据公开资料,中国零担运输行业目前整体处于整合提速期,基于中小型电商居多、大件电商增长强劲,以及制造业趋于生产柔性化等因素,零担市场未来可期。

但在目前,市场进入门槛低、低端专线占据大量份额的问题依然突出。公司多、规模小、顾客散、行业集中度低——从经济学角度解读,这些特征让零担运输行业更接近“完全竞争市场”,规模化效应的缺失让行业非常低效。

对于丛纹弨来说,他和团队沉淀的技术经验对于解决零担货运面临的问题可谓恰到好处。“以前总有人问我,说你们一帮搞技术的人为什么干起物流了。我就回答他们,中国的物流产业链急需优化,而我们的技术手段能够帮助企业提升生产力。技术不是飘在空中,而是要真正促进行业变革。餐饮业的变革者是美团、饿了么,金融行业的变革者是移动支付和互联网金融。零担货运也需要通过算法推动变革。”

十年前,资本开始助力零担市场。近年来,不断增长的需求倒逼产业趋向集约化。乐卡车联这个看似“局外人”的存在,正在通过它的技术基因更加强力地撬动1.72万亿零担市场。

在丛纹弨看来,公司在物流领域的核心竞争力主要体现在调度算法上。因为每一单物流都涉及到提货、包装、运输、储存、装卸、配送等环节。除此之外,还有很多类别项式。因此,我们感觉很简单的“拿个东西、送到地方”的物流,其实很难在整体上找到最优解。但是通过算法可以部分解决这个难题。对干线运输模型进行车流和覆盖的组合建模,通过可节约里程的启发式算法,最终达到合理安排路线,优化里程的目的。据公司统计数据,通过算法,可以减少一条干线的至少一次转运,提升一天时效,同时降低20%的运输成本。

目前,乐卡车联和头部物流公司,包括德邦、顺丰、京东物流、安能等建立了合作关系。2018年,公司营收从前一年的600万大幅提升至2亿元,到2020年更是达到13亿。

乐卡车联从一家科技公司,到物流科技公司,尽管目前为止看来选对了赛道,但一路以来也有不少争议和抉择时刻。

产业化的技术人应该抱持用户思维

“如果把自己当成技术人,谁都想做最厉害的技术,但是技术思维很容易陷入到一个个细节或Bug中,不能自拔,用大部分时间去解决最难的问题。但对于CEO来说,真正关心的问题不是难的技术是否被解决,而是什么时间交付。如果70%的技术做好了,剩下的30%即使短时间内做不出来,能否先交付上线,剩下的部分再迭代优化?”

事实上,公司从最初选择做AI智能软硬件,到后来转型做物流算法,并非丛纹弨个人所愿。但商场如战场,既然选择了竞争更为激烈的领域,心态也必须随之变化。

在物流这个强业务领域,他认为最不需要的就是解决客观问题的技术思维。而在技术思维之上的,是产品思维。“产品思维该怎么理解?比如产品经理和开发者共同设计开发了几款产品,在整个过程中确实考虑到了该产品的功能性、实用性,以及美观性。但他们的思维方式没有跳出内部讨论的桎梏,最多看看行业中的优秀案例,最后在综合讨论意见后产品方案就确定下来了。这样的思维确实考虑到使用者了,但我们可以想象下,如果把这几款做好的产品放到卖场,用户可以在有限的产品中选择买哪一款,但很可能也只是选择了自己不满意中相对还好的一款。”

在丛纹弨看来,最厉害的思维是用户思维,这与物流行业的特点密切相关。因为客户需求的多维度和不确定性,物流行业没有固定的产品形式,各式各样的单项业务覆盖了每一趟业务的全流程。“什么样的业务都有,还有可能相互排列组合。”

比如,一件货物从北京运抵上海,可以选择的运输方式包括海运、空运和陆运。陆运也可以选择公路运、铁路运,还是公铁联运。假如客户比较在乎成本,可以建议他走海运。如果客户的需求点在于时效,则可以走空运或者陆运;如果客户要求高性价比,则建议选择公铁联运。

智慧物流之所“智慧”,就是要通过技术满足客户对货物运载量、时效、价格等所有的需求。技术人在这个领域的最大发挥,就是能够把用户所有需求在算法的推演之下达到最好的平衡。与此同时,也能通过算法的优化,将每天运行的成百上千条线路进行最优性价比规划。

“通过优化产业链改变原有的关系和链条,这是IT的核心价值。很多人将IT当成工具,主要是出于减少人工的目的,虽然也提高了生产力,但没有改变生产关系。IT在本质上可以改变生产关系,比如让HR系统和ERP系统产生化学反应,从而提升内部的整合效率。相应地,我们在为产业界提供技术服务时,也要秉持塑造价值链条的思维。”

丛纹弨认为,很多CTO的思维并没有真正扎入商业本质,还在它的外围徘徊,这是技术人创业很难成功的原因所在。他本人也是在两次创业之后,才达到了现在对商业化的认知高度。

如何成长为创业者

在技术人对工具的选择上,有的人喜欢新工具,有的则喜欢老工具。丛纹弨认为,这两种逻辑都不对。“新工具的使用在于解决核心技术问题,老工具的使用则是尽快推进编码进度。”

在他看来,判断技术人应该选择使用新工具还是老工具这个问题,首要是项目是否需要快速交付。“判断和解决问题应该从多个角度出发,而不仅从是否擅长,或者有没有风险考虑,一切都应该围绕商业本质。比如,当程序员需要快速交付产品时,是用C#、VB,还是用C++来写,本质并没有区别。如果你做了十几年.NET,可能用.NET两天就能完成一个项目,用C++可能要花半个月,那就用.NET来做。但如果本身用C++来做更好,时限不急,就用C++来做。”

这是技术人在应用工具上应该注意的问题。另一方面,涉及到管理或者创业,丛纹弨也从自身的过往经验给出了相关的建议。

基于多年创业和管理经验,丛纹弨发现在技术人和业务人之间有两种难以调和的矛盾。在他看来,技术人因为有技术理想,永远看向长远目标。业务人则正好相反,因为到手的收益几乎是绩效考核的实时反馈,对于他们来说,永远都会跟着绩效指标来确定努力的方向。

“比如,我们一开始的考核指标是开发多少条线路,那段时间业务员都在开短线。后来又在绩效中增加了长线的权重,大家又都转向开长线。”作为CEO,丛纹弨的一项重要工作就是平衡公司的长期和短期利益。

此外,如果作为创始人,他认为还需要做好以下三个“找”:

  • 找方向。创始人最好自己确定战略方向,开会讨论也找和自己信息量对称的人,不需要让每一位职业经理人都参与。每个人都会从自己的角度思考问题,人多口杂反而影响判断。
  • 找到人。创始人应该做的第二件事是找到合适的人,安排到合适岗位。技术人要切忌受自己的偏好影响,从而选择了自己欣赏,但非岗位所需的人。
  • 找到钱。钱的问题肯定不用多强调,需要强调的是找到钱之后做什么。对于ToB市场来说,在前期融资阶段市场没那么重要,但是到了C轮之后,市场的重要性就开始不断提升。

“在不同的发展阶段,公司的着力点也不同。例如,在业务拓展阶段,我们的人事、财务和研发都是为业务服务的。而到了上市前的第一个财年,是财务需要合规的时候,研发和人事也要以财务为核心来开展业务。”


新程序员001-004 已全面上市

欢迎扫描下方二维码或点击进入立即订阅

即可畅享电子书及精美纸质书。
在这里插入图片描述

AI研究员转型CEO的实战导航:从代码能力到问题翻译力 AI研究员转型技术型管理者,本质是能力坐标的系统性重构——不再以论文指标或模型精度为标尺,而需掌握将模糊业务诉求转化为可建模问题、将客户预算焦虑映射为MVP范围、将投资人对护城河的追问具象为可专利架构的‘问题翻译力’。这一过程涉及技术雷达、客户痛点仪表盘与现金流罗盘三层动态导航机制,并深度耦合工业部署约束(如Jetson边缘算力、产线光照干扰、MES系统集成)与商业验证逻辑(ROI计算、SLA条款、合同责任边界)。文章聚焦AI从业者在从算法实现到产品交付、从实验日志到客户验收、从单点创新到组织能力沉淀等关键 阅读详情

相关推荐

程序员十年成长手记:从CRUD到抽象思维的认知跃迁

软件开发本质上是问题求解与系统建模的过程,其核心能力不在于掌握某项框架语法,而在于理解技术背后的原理约束与工程权衡。当开发者从‘能跑就行’的增删改查阶段,逐步深入到资源生命周期管理、表达式树驱动的抽象设计、跨栈协同的架构决策,便自然触及性能瓶颈、一致性保障、可观测性治理等高阶工程命题。这一过程高度依赖真实场景驱动的学习闭环——如通过一次支付超时故障溯源 Kestrel 内存模型,或借开源项目被用户反馈倒逼重构 ORM 表达式引擎。技术成长不是知识堆砌,而是将零散经验焊接为可复用的接口契约与场景化决策框架,最

天下无双 356

vb.net下如何销毁类的实例

  原提问地址:http://hi.youkuaiyun.com/link.php?url=http://topic.youkuaiyun.com%2Fu%2F20091116%2F22%2F67d13f8b-3f05-4455-8042-721f5198b1b5.html     vb.net下如何销毁类的实例,这个问题其实已经困扰了我至少两年之久,一直没有时间来做个实验,于是在简单做了个实验后,发帖于优快云

丛纹弨的专栏 2806

MIT Cheetah Learning (一):State Estimate 从理论到实践:EKF融合IMU与编码器的状态估计全解析

本文深入解析了MIT Cheetah机器人中基于Extended Kalman Filter的状态估计技术,详细探讨了如何融合IMU与编码器数据以实现精准的State Estimate。通过四元数建模和传感器误差分析,揭示了EKF在复杂地形中的工程实践价值,为四足机器人的实时状态估计提供了完整解决方案。

weixin_30292843的博客 306

遗留代码动不得,Bug修不完啊

至于具体的应用名称,这名老程序员并未透露,只表示,此款应用在过去增长很快,广告投得也多,销售团队也很能「打」,但在最近几个月,公司却被大量客户流失和业务缩水搞得焦头烂额。我甚至提出过,把项目分叉,尝试不同的设计方案和取舍,看看能不能解决问题。该初创公司现有的研发团队自己也很崩溃,因为这个项目用的是 React Native 技术,依赖一大堆 NPM 包,其中不少早就没人维护,稍微一碰就崩。多年下来,这自然导致了难以解决的技术债务,以及我们依法必须维护的各类仓库分支——无论是自己开发的,还是第三方的。

李肖遥的专栏 232

保姆级教程:从零到飞,用QGC地面站搞定PX4无人机全流程配置(含避坑指南)

本文提供了一份详细的QGC地面站使用教程,指导用户从零开始配置PX4无人机,涵盖固件烧录、传感器校准、遥控器设置及航点规划等关键步骤,并包含实用的避坑指南,帮助新手顺利完成首飞。

weixin_30329623的博客 221

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3108

遗留代码动不得,Bug修不完!25年老程序员:我受够了,选择离职

至于具体的应用名称,这名老程序员并未透露,只表示,此款应用在过去增长很快,广告投得也多,销售团队也很能「打」,但在最近几个月,公司却被大量客户流失和业务缩水搞得焦头烂额。我甚至提出过,把项目分叉,尝试不同的设计方案和取舍,看看能不能解决问题。该初创公司现有的研发团队自己也很崩溃,因为这个项目用的是 React Native 技术,依赖一大堆 NPM 包,其中不少早就没人维护,稍微一碰就崩。多年下来,这自然导致了难以解决的技术债务,以及我们依法必须维护的各类仓库分支——无论是自己开发的,还是第三方的。

优快云资讯 2万+

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2593

一名「佛系」产品经理的成长之路

作者:拼搏的80后全文共 3280 字,阅读需要 7 分钟———— / BEGIN / ————众所周知,互联网行业的产品经理每天需要与形形色色、不同岗位的人沟通,上至老...

人人都是产品经理 311

HandwrittenMathFormulaRecognition:基于YOLOv8的手写数学公式识别系统

输入:包含手写数学公式的图像(拍摄的板书、作业纸等)输出:对应的数字文本形式的数学公式(如LaTeX格式或文本表达式)标准的手写数学表达式数据集,包含在线轨迹及图片,广泛用于公式识别研究。包含近10万对公式图片及对应的LaTeX标注,适合训练公式识别模型。MathBrush公开手写数学公式图像数据集,含多种书写风格。手写数字与符号数据集(MNIST及其扩展)用于基础数学符号的训练。

YOLO 283

matlab 一维相位解缠

一维相位解缠算法的matlab代码实现。

点云侠的博客 373

为什么你很努力了,成长却很慢?

为什么你很努力了,成长却很慢? 2017-11-20 分享智识与见解的

nwpu_geeker的博客 2422

24、语料库与科技术语库建设

本文探讨了语料库在科技术语库建设中的关键作用,重点分析了词性标注、索引、搭配、词形还原、频率计数、词汇排序和类型-标记分析等核心技术的应用与挑战。文章以印度语言为例,指出其语料库处理工具匮乏的现状,强调需开发适配本地语言特征的技术,并提出一个整合多种处理步骤的综合流程,旨在推动印度语言科技术语数据库的系统化建设,促进科技语言的发展与应用。

cola5的博客 92

6年从敲代码成长到CEO, 4年创业估值200亿美元,他是如何逆袭的?

告别小白,真像大白,我们继续聊科技圈。2014年6月,今日头条完成C轮融资的时候,公司估值才5亿美元,到2017年9月,今日头条估值增长40倍,已经超过200亿美元,和美团滴滴并称互联网“TMD”阵营。在信息分发应用领域,今日头条在全球有6亿用户,用户日均 76分钟停留时间,保持着第一身位领跑的纪录。如今张一鸣还在通过新产品探索能力边界,国际化突破增长瓶颈。这样一个无钱无背景的今日头条究竟是如何崛...

weixin_34236497的博客 795

SKUA-GOCAD入门教程-第七节 点的创建与编辑3

本文介绍了四种从井数据创建点集的方法

江洋大葱的博客 963

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

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

从外包程序员到自研产品 CEO,他用 5 年证明:出身不决定上限

本文讲述了一位外包程序员在 5 年间实现从技术执行者到自研产品 CEO 的蜕变历程。他曾困于重复的代码工作,却凭借对技术价值的深度思考、敢为人先的转型勇气、破解资源困局的智慧、持续迭代的成长思维以及打破出身桎梏的信念,逐步突破职业天花板。这段经历不仅展现了个人奋斗的力量,更印证了一个核心命题:出身与起点或许会影响出发的速度,但永远无法定义人生的上限。​一、起点:在重复的代码里看见裂缝​2018 年的夏天,李明还在一家外包公司的格子间里重复着 “复制 - 粘贴” 的工作。作为成千上万外包程序员中的一员,他的日

2503_92849134的博客 380

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

你必须掌握这个技能,跳出码农职业的“生命周期”

本文编译自medium题为The one essential skill that will set you apart from other developers的文章,作者Isabel Nyo认为除了提升专业技能,还应学会换位思考,高屋建瓴,了解任职企业的真正需要,发展蓝图,这才是一个优秀员工的必备技能。希望能对您有所启发。 根据埃文斯数据公司的调查显示,目前全球共有2200万程序开发员,而...

H.A.N的博客 761

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OpenAI CEO Sam Altman都点赞的程序员成长路线和方法

GitHub是一个非常有用的学习编程和提升编程技能的平台,学习者可以通过利用GitHub的各种功能和工具,学习开源项目、参与开源贡献、创建自己的项目、学习GitHub工作流程和参与开源社区等,提高自己的编程能力和实践经验。GitHub上有许多活跃的开源社区,如React、Angular、Django等,这些社区提供了许多有用的资源和交流机会,学习者可以加入这些社区,与其他程序员交流经验和知识,从中学习和提高自己的编程技能。此外,语言和框架的社区也是程序员获取信息的重要渠道,可以在社区中查看新闻和讨论。

马沛专栏 1618

万万没想到 | 我是这样减少与产品的“撕逼”

为什么80%的码农都做不了架构师?>>> ...

weixin_33883178的博客 77

天天加班,你以为你就可以升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰了么?

最近优快云里有个关于加班是否有价值的讨论,然后一不小心我就得了反方最多的赞。于是记录下我的一些观点和看法吧。 工作的意义       对于我们绝大多数人来说,工作最基本的意义是我们可以通过自己的劳动换取酬劳来养活自己,尤其是对于刚毕业的学生,拥有一份全日制的工作意味着自己走出校园,踏上社会,自己真正开始独立起来。在养活自己的基础上,我们才会考虑一些其他的,比如

635

在创业公司的锻炼心得

从实习到毕业转正,在北京一家创业公司已经工作了8月有余,期间从一名只能写算法或者说方法函数的菜鸟,过渡到渐渐习惯linux操作、查询日志修改bug、构建webservice的功能服务端口、maven。。。摸爬滚打,幸好同组的两位大哥经常指点,总算是逐步熟悉了这些流程。 而在这家创业公司,CEO可能会常常指派一些需要“产品+多技术”结合的任务给个人。。。所以自己总结了一个业务流程,现在分享下,不同

決心的专栏 680
上一篇: 我们离成为C++、C#、MySQL之父有多远?
下一篇: 好高的佣金,《新程序员》合伙人计划来袭,人人皆可参与
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值