写给我们这些浮躁的程序员

写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。

 

多做项目,多思考

 

不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户。

当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作,那真的很杯具,因为他认为你还不能胜任工作或者你的加入会让项目组更糟。

 

还有人说,我刚进公司,公司就把我当成了苦工,工资又低,项目组加入好几个,也做了很多事情,每天都要加班。我估计有很多人感觉是这种状态,为什么会是这样,因为全国人民(不只是程序员)里有90%可能都和你一样的感觉,这说明你现在状况是很普遍的,也说明你现在的能力并没有很多出众的地方。也许是逆境才能让人成长,如果有一天你让你的团队从这些苦力工作中解脱出来或者能给你的团队前进的动力,那你就升华了,你就比他们出众。你没有能力去改变现状,所以只能接受,而不要认为是自己生不逢时,或者说公司环境太差。创业也一样,不要认为公司没发展的主要原因是环境太差,那你不要去当老板算了,投资环境都非常好还能轮到你吗。

 

还有很多同学感觉自己付出了很多,回报太少,这个问题很难平衡,首先一点,公司在聘你进来后不会因为你没有成绩就先给你回报,公司也不可能会在你有了成绩后就立即给你回报,但是长时间付出没有回报,那这个公司就不值得你付出。我不赞成频繁换公司,这么做至少可以说明你是一个只求回报不求付出的人。

 

至于薪资的问题,这个很难去评估,因为每个企业的收益相差太远。但是刚毕业的同学工作需要关注薪资+成长环境,当薪资可以满足普通生活需求后,成长环境更为重要,就好比,给你一月5000元,或者6000元,真的不那么重要,因为这些收入在你以后的人生中基本没有影响。当然,如果你现在在大城市几年里每个月只拿着1000元,那还是需要选择一下收入更好的公司,因为这么低的收入会严重影响你的工作学习计划,也说明你的公司不重视员工,没有能力给员工好生活的公司,将来的发展也是有限的。

 

特别说明一点,互联网公司与传统信息化企业不一样,互联网一直是风险比较高的行业,也许你选择了一个看好的企业,也佩服老板的眼光,可能你现在需要的是与公司同甘共苦。不要指望在刚创业的团队里拿到非常好的待遇,因为你现在就是在投资,也许几年后公司成功了,你就是功臣,不怎么出色的你也可以当上总监或副总裁。

 

自己开发框架与工具来提高工作效率

 

当你参与了很多项目,当你发现自己经常做一些COPY,PASTE的操作时,你可以考虑花时间去提取问题的共性,做一些自动化工具去摆平问题,或者是写一些基础框架来屏蔽这些无聊并且累赘的代码。

 

自己开发框架与工具,可以让你快速的从一个初级程序员转变成更高级的程序员或分析师或架构师,因为这个过程中给你提供了为其他程序员服务的机会,你有动力去了解其它程序员的工作需求,你可以把你的框架或工具写得很好,接口简单灵活并且性能好,分析师和架构师就经常要干这种让人力成本降低的事。但要记住一点,不要以为自己开发框架与工具就认为很NB了,因为这种工作并不会体现多少技术含量,而只是提高个人抽象问题的能力,这个活很多程序员都能干,但是很少人去干好。

 

参与开源项目

 

参与开源项目可以让你领略到不同程序员的沟通方法,开发习惯,技术思维,可以认识更多的朋友,如果你足够强,也可能一举成名哦。可以让你更深入了解这个开源东西,所以最好是感兴趣或者是与工作有关的,不要说什么流行就参与什么。开源项目可以自己贡献一个新的项目,或者参与一个感兴趣的项目。

 

不要指望开源项目会给你带来直接的金钱,如果你想拿着开源项目封装一下去发财,那我真不知道如何做,可以去问问什么什么芯,什么什么国产操作系统的人,他们更有经验。

 

英语

 

在这个全球信息时代,英语真的是一个很重要的工具,我真的很羡慕那些学校里英语就很好的同学,好的英语能力可以更快速的了解到更多知识。当前,新的技术与知识大部份语言都是英语或翻译成英语,如果能把英语学好,可以让你人生少奋斗10年。

 

写技术博客

 

写技术博客是一种可以快速提高的方法,但是一个人能坚持每周写技术博客,那是需要付出很多代价,写博客并不是要我们写出高质量的文章才发表,我们可以分享自己的一些小经验,也可以分享自己的体会。一样东西在你大脑里,并不表示你已经掌握了,如果你能说给别人听,或者用文字表达出来,那首先你要将这些知识点整理清楚才好表达。我经常认为自己已经对某个问题了解了,但是在整理技术博客时发现自己的知识盲点,然后再去查找知识来补充自己的盲点,直到最后搞清楚了才算告一段落。

 

有些人不喜欢分享或者害怕分享,但是在这个世界,只要不是公司机密或商业秘密,拿出来分享可以让你得到更多同行的反馈,网络上的人会给你相对真实的反馈,因为大部份人与你没有利益关系。

 

新人不要害怕自己分享的知识是否有技术含量,只要你认为有价值,都可以拿出来,这不仅可以给别人提供知识,也可以自己整理思路,还可以得到网友的反馈。如果你的知识没有价值,分享出来也没有关系,如果你的文章技术含量低,怕被人鄙视,那是你这个人不敢承认现实,因为同事与朋友可能不会说你的文章很菜,就算被鄙视了又如何,有时被人鄙视也是一种前进的动力。有人说如果几年后我进步了很多,但还让人看到我这些初学时弱智的文档,误人子弟,不好意思,Ok,那个时候有可以完全把文档删除,其实我更喜欢放在那里品味自己成长的过程,把有误导的地方更正。

 

我知道有一个技术博客作者,数据库专家杨廷琨,他几年来,每天坚持写一篇技术博客,现在已经有2千多篇,我的ORACLE数据库水平比他差很多,但是我也偶尔看到一些他新写的文档我几年前就会了,但这些并不妨碍我对这位博客作者的敬佩,因为他的博客让我学到了很多知识。

 

加入感兴趣的技术论坛

 

每个公司使用的技术与产品及环境都不太一样,也许你在公司里感觉什么东西都是别人做好了,我只是个流水线工人,我们的系统由于有严格的规范也不太出问题,自己的实践提高机会太少,那建议你加入感兴趣的技术论坛。

 

技术论坛上你可以看到很多人各种各样的问题与分享讨论,你也可以试着去帮别人解决问题。技术论坛可以让你进一步成长,但不要告诉我你只是会沙发、顶或接分的那种。

 

国内优快云、ITPUB、CHINAUNIX、JAVAEYE、MSDN都是人气很旺,里面也不缺技术大牛与无敌大菜鸟。

 

常看参考手册

 

很多程序员,遇到问题喜欢直接去请教别人,或是Google找结果,通过别人或Google也许问题可以解决,但是只能形成知识点,不能形成知识体系。

 

要全面掌握一个东西最快的方法是看产品的官方参考手册,参考手册一般是代表正规的用法或者是推荐的用法,对于小产品最好是先将参考手册全部看一遍。如果是比较大的产品如(ORACLE、JAVA、.NET)那可以选择看经常使用到的部分。只有当你在看完参考手册还不懂的时候再去Google或与别人探讨,这样的方式会让你的知识更体系化。

 

深入分析问题原因

 

程序员一定要具备对技术问题刨根问底的想法,很多程序员能解决问题,但是不想去了解问题的根源。我们经常遇到问题,而且很多问题重启程序或者重启机器就好了,有多少程序员会去挖掘重启就解决问题的原因。我是从事数据库的,也经常看到很多人遇到数据库有问题,重装一下搞定,而没有深入分析问题产生的原因。也许在生产环境我们没有时间去分析,但是在开发环境、测试环境你是不是也经常重启解决问题。如果能在开发环境与测试环境遇到问题,这是技术人员成长的最好机会,我们在自己的领域一定不能放过这种成长的机会,因为大部份专家都是在这种历练中出来的。

 

不要害怕复杂

 

很多程序员习惯了利用各种框架及工具解决问题,自己只是写一些简单逻辑,当有一天遇到一个问题,没有对应的框架或工具时就放弃需求。我们不要害怕困难,如果你每天的代码都没有挑战,那何来提高,我们应该在适当的时候给自己一些压力,这样可以让自己提高得更快一些。比如你的系统需要一个轻量级的工作流引擎、编译器、解析器、界面设计器、屏幕控制器,或者一个http服务器之类的东东,但是现有的东西都感觉不太满意,你可以自己去搞一个试试,不要害怕不成功,不要害怕自己做不好。这些东西看起来有点复杂,但是当你深入去做时,你会发现里面有很多有意思的东西,你需要去逐步改进你的小系统,直到它能很好的运行为止,这是个很好的成长过程,可以让你对程序有更深的理解,也可打开思路。

 

学习计算机基础,深入技术原理

 

有时候我们经常迷惘,感觉技术水平没有提高,感觉技术能力总是浮在表面,特别是当你发现自己算法分析、性能分析、故障诊断能力有限时,也许这是你再次需要学习计算机基础的时候,因为基础不牢,所以你的问题诊断准确率不高。每个程序员应该都学过计算机基础(计算机体系、操作系统、网络、数据库原理、算法等等),这些知识对很多人来说是很枯燥。在当前高级编程语言时代,你的计算机基础不好也能编码,而且效率也不低,但是当你要想成为技术牛人,计算机基础就是一道坎,因为不扎实的计算机基础知识会让你在忽悠与被忽悠中成长。

 

关心产品市场与商业动态

 

程序员是否需要关心产品市场与商业动态,我认为是有必要的,除非你真是技术天才,能闭关十年后横扫江湖。计算机技术发展太快,每年都有新的流行产品与技术,大公司也经常改变战略或易主。如果你想引领技术潮流,想创业,那一定要关心产品市场与商业动态。

 

不要去轻视任何一种职位、语言、工具

 

在IT岗位里,没有高低之分,不要去轻视任何一种岗位,有些程序员认为自己的成果最有价值,美工、测试只是边缘岗位,项目经理就只会瞎指挥,不干活,销售人员与售前人员接到定单后屁事都没有,整个项目基本上就是我一个人的成果。这种心态是最要不得的。其实你的领导并不会这么想,很多事情是你不知道的,如客户关系就可能不是你一个人搞定的。还有最重要的一点,如果这个项目没有你参加怎么样?项目可能换成另外一个人做,也许他也能做得也不错,这就说明你的价值或重要性并不像你想象的那么重要。举个例子:

 

就好比你买一台联想电脑4000块,卖给一个没看过电脑的火星人20000块,这台电脑是最后的成果,但是否表示联想这台电脑是最重要的,可能你买一台戴尔的电脑还赚的钱更多,也可能你只要给对方一台杂牌电脑就可以拿到20000块。在这个例子里更重要的也许是客户关系与抓住商机,而买什么样的电脑影响不大(你在项目里的地位可能就是这台电脑的作用,没有你肯定不完整,但是很容易找到你的替代品,所以你的价值并不是最重要的)。

 

计算机编程语言是初学者最喜欢对比的话题,有的大师也经常对比各种语言的优缺点。我并不反对的评论那种语言的优劣,但我们不能去鄙视某种语言的及其使用者,因为流行的语言都有它生存的环境,可能是我们对技术的见识太窄,也可能是我们对人类的思维习惯了解的不全面,不要总是拿自己的习惯去评价。有很多系统管理员喜欢用命令行,喜欢用shell,perl等脚本语言,这些东西在我看来简直是低效且易读性差的东西,但是当你经常在没有图形界面下工作时,脚本语言可能真是更高效的选择。

 

最后写上一句浮躁的根源:不要把祖国当母亲,应该把祖国当自己的孩子。

 

本不想讲这句话的,但是现实就是如此,浮躁的人群总是对社会充满了意见。我认为所有的这些浮躁都有一个共同点,就是认为自己无法改变这个社会,改变这个社会是国家的事,是其他人的事。

 

小时候老师总是讲祖国是母亲,我们是花朵,但是实际上我们也不是什么花朵,我们就是郑智化歌里的那根“小小的草,风吹雨打后依然不倒”。现实的社会总是充满着种种不平衡,但是浮躁并不能解决问题。有时总在想祖国并不像我的母亲,她更像是我的孩子,她还很小,经历过很多坎坷,我们经常感觉自家的孩子比不上别人的孩子的某个方面,于是对孩子多加责骂,也可能会让她花一个暑假的时间去补习。

 

小孩子有一些成绩后也会骄傲,有时还会欺骗,我们不能容忍的是她的恶意谎言,但是她还没有到无药可救的程度,她依然还在成长。我们经常拿孩子与别人的孩子对比,而且总是发现别人孩子更好的一面,但是你是否希望与别人交换孩子呢,除了感情外你是否了解别人孩子的全部,我们需要更多的面对现实,应该在孩子成长的时候及时指出她的缺点,她不可能什么都是优秀的,所以我们应该尽自己的能力让她更好一些。你不太可能改变母亲,但是你的行动会影响孩子,你抛弃孩子,你真正的孩子将来可能也会抛弃你,所以说祖国可能并不像母亲,更像孩子,如果你把祖国当孩子,也许是另一种人生价值。

原文链接:http://www.colotu.com/html/gcs/107.html

转载于:https://www.cnblogs.com/tzh521241/p/colotu.html

从零部署DeepSeek V4 Flash:NVIDIA DGX Spark实战指南 GPU加速计算已成为现代人工智能基础设施的核心,其原理是通过并行处理架构大幅提升深度学习模型的训练与推理效率。在AI工程实践中,NVIDIA GPU凭借CUDA生态和专用驱动栈,为大规模语言模型部署提供了硬件基础。本文聚焦于企业级AI服务器部署场景,针对NVIDIA DGX Spark多节点系统的硬件初始化、驱动兼容性配置、容器化部署等关键环节,提供从系统层到应用层的完整解决方案。通过vLLM推理框架的实战配置,演示如何将DeepSeek V4 Flash模型高效部署于多GPU环境,涵盖Tensor Par 阅读详情

相关推荐

Crazyflie 2.1固件刷写与地址配置全攻略:从开箱到连接Crazyswarm

本文详细介绍了Crazyflie 2.1微型无人机的固件刷写、地址配置及与Crazyswarm系统的集成方法。从开箱检查到多机协同飞行,涵盖了硬件准备、固件刷写、无线电地址修改等关键步骤,帮助用户快速实现集群飞行控制。特别针对Crazyswarm系统集成提供了实用配置示例和调试技巧。

weixin_42530458的博客 405

再次写给我们这些浮躁的程序员 - MKing''s Blog - 优快云博客

                                          再次写给我们这些浮躁的程序员         2010年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程...

半岛铁盒 279

手把手教你用mitmproxy抓包抖音数据流(附Python脚本模板)

本文详细介绍了如何使用mitmproxy抓包抖音数据流,包括环境搭建、证书安装和Python脚本模板。从mitmproxy配置到抖音API解析,提供完整的移动端数据流分析方案,帮助开发者快速掌握数据抓取技术,适用于应用优化、竞品分析和安全审计等场景。

weixin_33670786的博客 307

转: 再次写给我们这些浮躁的程序员

<br /><br /> <br /> <br /> <br /> <br />2010年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。<br /> <br /> <br /> <br />多做项目,多思考<br /> <br />不要害怕做事,刚毕业的同学最缺的就是工作经验,乱

jgzd1124的专栏 868

LTE信令流程实战:从Attach到Service Request的完整解析(附常见问题排查)

本文深入解析LTE信令流程中的Attach和Service Request关键环节,提供从基础原理到实战排查的完整指南。涵盖鉴权、承载建立等核心步骤,分析常见故障模式及优化方案,并附赠信令跟踪工具使用技巧,助力通信工程师提升网络运维效率。

alpha的博客 319

蓝牙Mesh协议一基本概念

前言 蓝牙SIG联盟在2017年发布了蓝牙Mesh1.0的协议规格,基于低功耗广播包来实现的多对多的通信技术,Mesh协议建立在BLE的物理层和链路层上,所以也可以和BLE的蓝牙进行通信 本章主要介绍蓝牙Mesh的基本概念和协议中的层级结构,也是参考网上的资料,如有异议,欢迎留言指正 基本概念 广播和洪泛 蓝牙Mesh技术是基于BLE的广播报文来实现的,是一种洪泛的消息传输机制,Mesh网络的节点间通过3个广播信道进行通信。当蓝牙Mesh网络中的节点收到消息后会转发这条消息,大大增加了网络的覆盖范围;但

9740

http协议

HTTP协议+Tomcat

m0_66740775的博客 957

MaaS 商业模式全面分析报告:从技术赋能到商业变现的全链条探索

MaaS(模型即服务)商业模式正成为AI产业主流,2024年上半年中国市场规模达2.5亿元,预计2027年占比将提升至47%。该模式通过云服务提供预训练AI模型,大幅降低企业应用AI的技术门槛和成本。核心盈利方式包括按使用量计费、订阅制、定制化服务等,其中混合模式因灵活性成为趋势。MaaS产业链包含模型提供商、云平台、应用开发商和最终用户,重塑了AI产业格局。随着《数据法案》等监管加强,数据增值服务面临更严格合规要求。未来五年,中国MaaS市场增速预计超50%,用户规模将从2025年2.1亿增至2030年5

芯片行业20年 · 参与定义实现千万级量产出货 · AI芯片PM 2892

玖章算术创始人叶正盛:中国基础软件国内崛起服务全球

题记:玖章算术的创始人叶正盛(花名:斗佛)是业界知名的数据库专家,也是我多年的老朋友。2022年创立玖章算数,打造多云数据库管理平台。本文是他在新年发表的关于数据库技术的观点。转发以飨读者。以下是作者原文。2022也是我们创业完整的第一年,团队、产品和技术都突飞猛进...作为数据领域20年的从业者,曾负责过阿里云数据库产品的整体规划,经历了不一样的2022,想谈谈2023年可能会不一样的数据库。一...

Enmotech的博客 981

使用 PLS 回归进行近红外光谱的异常值检测

在光谱数据中,并非每个数据点都是有效的,因此,在构建模型时找到与大部分数据不符合的数据点是一种必要的操作。这些数据我们称之为。在这篇文章中,我们将使用PLS回归进行红外光谱数据的异常值检测。

qq_44204759的博客 1423

人工蜂群优化算法(ABC)详解:原理、实现与应用

人工蜂群算法(Artificial Bee Colony, ABC)是Karaboga于2005年提出的一种群体智能优化算法,其灵感来源于蜜蜂群体在自然界中高效的采蜜行为。该算法通过模拟雇佣蜂、观察蜂和侦察蜂三种角色的分工协作来寻找最优解。在ABC算法中,每个潜在的解决方案被视为一个“食物源”,其质量由适应度函数评估。雇佣蜂负责在已知优质食物源附近进行局部开采;观察蜂根据雇佣蜂分享的信息,以一定概率选择并跟进优质食物源;侦察蜂则随机探索新区域,防止种群陷入局部最优。

qq_42212808的博客 393

再次写给我们这些浮躁的程序员

<br />再次写给我们这些浮躁的程序员<br /> <br />2010年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。<br /> <br />多做项目,多思考<br />不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术

MKing's Blog 9万+

多物理场光学仿真软件:COMSOL_(10).激光器与谐振腔仿真

定义Nd:YAG晶体的材料属性% 折射率% 吸收系数% 发射截面% 定义光泵浦源% 泵浦光波长% 泵浦光强度% 泵浦光方向% 定义全反射镜% 选择边界% 完美电导体边界条件% 定义部分反射镜% 选择边界% 反射率边界条件% 反射率通过 COMSOL 对激光器和光学谐振腔进行仿真,可以全面评估激光器的性能,包括输出功率、效率、稳定性和模式选择等。这些仿真结果为激光器的设计和优化提供了重要的参考依据。

kkchenjj的博客 1649

写给我们这些浮躁 不安的程序员

2010年初写过一篇博客(我们是一群和平年代充满浮躁与抱怨的程序员),一年过去了,社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。 多做项目,多思考 不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一

逍遥飞鹤的专栏 1283

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

写给浮躁的程序员

我们是一群和平年代充满浮躁与抱怨的程序员   和很多IT人沟通,发现表现出来更多的是浮躁与抱怨,所以有了本文,其实我们不论是coder,还是架构师或项目经理,都存在同样的心理,只是比较的对像及发展的路线不一样罢了。   现在是一个和平与发展的社会,大部份人不会为了吃饱而发愁,更多的是为了生活更好,为了工资、房子、车子,为了得到周围人的褒奖,受到周围人的影响,以至于不知道自己想做什么,常感觉

小豪之家 2057

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

写给那些浮躁的程序员

现在的社会好像更浮躁,也有网友问我这方面的问题,于是有了下面这篇文章,再次写给我们这些刚入行浮躁的程序员,如何成长,我列出了一些成长的心得,大家不必每条都去实践,要想成为优秀的程序员需要大家多实践里面的几条。

Mac_cm的专栏 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 设计模式之原型模式--Prototype Pattern
下一篇: 代码重构的实战经验和那些坑
datuo2821
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值