程序员的思考:分享即提高!

对csdn inscode产品对工作3年内的程序员的体验改进与思考 inscode 的亮点和核心竞争力 要突出, 遇到问题要能帮用户快速解决 ,在多平台上进行宣传,帮助用户解决痛点 ,让开发者更多的提意见。 阅读详情


从今年2月底开通微信公众账号以来,到现在差不多9个月的时间,订阅的用户差不多有 500 人了。这个数字当然不能和那些大 V 的订阅数相比,甚至那些大 V 在文章结尾处给别人的账号做个推荐,一天的订阅数也许都会超过我的。但是,我对 500 个订阅数的结果是很满意的。

记得最早开通公众号那会,我还在上家游戏公司。我离开公司前给程序组的同学做了一次关于游戏服务端开发的讲座。在演讲稿的最后一页,我贴出了我的公众号二维码。我说,我马上就要离开公司了,这是最后一次做分享了。不过,可以关注我的这个公众号,之后我的学习心得和最新动态都会在这个公众号里发出来。大家都在广州,也有的是交流的机会。

所以,前公司的同事成了我的公众号最早的订阅者。即使订阅数很少,我也写的很认真,因为我明白,写公众号收获最大的不是读者,而是自己。它锻炼了我写作的能力,让我静下心来思考,通过不断的学习、思考、总结、汇集成文字,最后常常有种豁然开朗的感觉,感觉对一个东西的理解又深入了一个层次。

在我刚工作第一年的时候,我就养成了写博客的习惯。仔细想了想,也许是在更早的时候就开始写博客的。我记得大四(2006年左右)那会,博客园 可谓是如日中天,百花齐放。在博客园里我如饥似渴的学习着微软的技术,那时候园子里大神辈出,每每让我仰视。那时候加的 QQ 群:湖南微软开发者俱乐部,直到现在还在里面,虽然不发言,也没有被管理员踢掉,可见这是一份大家共同的记忆,谁都不想去破坏它。

于是我学习大神在博客园里的开通了博客。在博客园开通博客是需要一番自我介绍的,当时还有些担心像我这种学生菜鸟,会不会不让我开通。于是在自我介绍里使劲把自己胡吹了一通,最后申请成功了总算松了一口气。不知道现在博客园的注册流程是否还是一样,我觉得那样挺好的,看似提高了注册门槛,最后能让用户有种注册不易,且行且珍惜的感觉。

工作之后,有一天看到一个同事把自己的 QQ 名改成了 coder 。这位同事姓刘,和我同一批校招进来,一起参加了金山的首批训练营。那时的他已经在训练营里声名显赫,在课堂上经常有惊人之举,常常有人议论。号称在学校的时候已经写了 10 W 行代码,样子看上去是一个典型的程序员。认识的同学大概已经知道是谁了。coder 是一个极其普通的词,但在当时的我看来,coder 代表了专注,专心研究代码,写代码,不浮夸,不浮躁,不因外界的纷杂变化干扰心境。于是我把博客园里的 ID 修改成了 CoderZh ,我姓张,Zh 表示 Zhang 。

印象中我删除了学校期间稍显稚嫩的文章,也算有个新的开始。从 2007 开始到现在,我在博客园里写了大约 200 多篇文章,收到的评论 2000 多。阅读数最高的文章《玩转Google开源C++单元测试框架Google Test系列(gtest)》,总阅读数到现在约有 58 W。

后来博客园逐渐没落了,即使发到首页阅读数也少的可怜,而博客流量的首要来源依然是搜索引擎。于是今年我完全放弃了博客园,搭建了自己的独立博客:http://blog.coderzh.com/ ,把之前的文章也导入了过来,同时也开通了微信公众号。

说回微信公众号。我也希望能有更多人订阅,也算是对我的付出的一种肯定吧。于是,我在我的各个社交账号上贴了微信公众号的二维码,在之前博客园的博客签名里进行导流,给开发者头条投稿等等。订阅数有了一些起色,下面是从开通以来累积用户数的变化曲线:

从 9 月份开始,曲线开始变抖了一些,开始越来越多人关注我的公众号了,我也在不断的思考我的公众号的定位到底是什么。看过我的独立博客的同学应该会发现,我的独立博客的文章分类只有三个:读书笔记、技术文章、思考感悟。技术类的文章不管前端后端,Python 还是 Go,通通归到了技术文章分类。而之前的我喜欢细分每个技术类别,到后来我发现人的精力是有限的,研究的技术方向也会很有限,通归到技术文章分类可以少一些分类的纠结,也能跳出技术的思维去看待世界。

所以,我的公众号的内容主要也会围绕这三个主题:读书笔记、技术文章、思考感悟。我更希望偏重于思考感悟方面,这也是这个公众号名称的由来:一个程序员的思考。我的公众号介绍是这么写的:
引用

作为一个程序员,

思考程序的每一行代码,

思考生活的每一个细节,

思考人生的每一种可能。

在订阅数突破 500 之际,我想可以正式的来聊一聊作为一个程序员对一些东西的思考。首先申明,我并没有什么惊世骇俗的想法,也没有想要一语道破天机的妄想,我不会使用诸如“粗大事了!xxx”、“有人@你 xxx”之类的诱导标题,因为那样吸引而来的订阅者并不是我的目标读者。我想写的,只是一些朴实无华的想法,和一些自己的切身经历。

回到本文的正题:分享即提高。你有没有注意到,程序员是一个最乐于分享的群体。很多程序员都喜欢写技术博客,学习了一些什么新技术,发现一个什么新技巧,都毫无保留的在博客里进行分享。

比方说,你花了 1 个周的时间研究了 Facebook 最新的框架 React ,明白了里面大致是怎么回事,学习到了这个框架的用法,甚至领悟到了 React 设计的精髓,然后你又花了半天的时间把这些东西总结出来,发布到了你的博客里。

这时另外一个人小 A 在网上浏览到了你的文章,他没有看过 React 的文档,也不太明白 React 到底为何物,但是隐约听过一些。而你的文章写的十分生动,把 React 总结的非常清晰易懂,又有条理,甚至看完后就可以开始和别人高谈阔论。

然而,小 A 认真看完了你的文章就真正掌握了 React 吗?你把对 React 的所以理解都写出来了,小 A 即使全部记住了,他对 React 的理解会和你一样吗?答案是肯定的,不一样。没有经历苦难,怎知幸福的可贵。没有经过漫长的学习,怎能体会最后豁然开朗的瞬间。

而有的人会有这样的想法,我那么辛苦学习得来的东西,怎能给你分享,让你这么容易就学了去。他们抱着“好东西不会给别人分享”的想法,因为他们要靠那些所谓的别人不知道的秘密来获取更多的资源(比如:赚钱、一份工作、或者赚取声望)。这样的做法无可厚非,事实上很多人都是这么做的,也许这源于人的本性:自私。

而为什么那么多成功的企业家乐于去分享呢?通过演讲、出书,把自己管理公司的理念、遇到困难时处理问题的想法和思路,公司的战略,毫无保留的分享给别人。(当然,有些企业家只是为了作秀和市场营销的目的,就另当别论了。)他们不怕竞争对手学了去吗?他们真的不怕。他们经常说的“小步快跑,快速试错”的互联网开发模式,你都要听烂了,但你真正理解了吗?知道具体该如何实施吗?遇到问题知道该如何处理吗?

我相信有些企业家到最后成功的时候,也没有真正理解自己到底是如何成功的。通过总结,才让他们意识到原来成功是这么来的,通过分享,才让他们对成功的理解更加透彻,他们明白他们的成功是不可复制的,而这过程中他们的一些难能可贵的精神或坚持,才是其中最重要的因素。

你在写 React 的文章时,每遇到一个含糊不清的问题时,你都必须把它彻底搞懂。为了让别人更容易理解,你还要假装自己对 React 一无所知,从一个更高的角度就看待 React ,理解别人的疑惑,调整自己的文字,让文章更加循序渐进,接近你当初学 React 时过程变化。这无疑是对自己学习内容的再一次洗礼,你说,写这篇文章,收获最大的不是你自己吗?

学习从来没有什么捷径。古人云:学海无涯苦作舟。是很有道理的。若不是你平时就花了很多时间学习了很多关于 React 的资料,当你看到别人写的关于 React 的学习总结的文章时并不会有多少感觉。前段时间公司有同事很深入的了研究了 TLS 协议(安全传输层协议),看了大量文献 Paper,深入理解了里面的大量技术细节,然后他在公司内部的平台上分享了一篇自己总结的 TLS 的文章。当我打开一看时,堪称史诗巨作,不仅仅在于篇幅的长度,更在于研究的深度。据了解,这位同事利用业余的时间,源于兴趣爱好,花了大量的时间去专研 TLS ,非常令人敬佩。

然而,即使我认认真真的花了 1 个小时的时间把这位同事的文章看完,我就能达到他花了几个月研究的水准吗?答案肯定是不能的。我没有经历学习 TLS 的苦,所以无法领悟 TLS 的甘。即使最后这位同事被邀请做了一次现场的分享,把他的文章再次提炼总结,我去听了也只能留下他很牛逼的印象。而最后收获最大的肯定是他自己,通过写作和分享,不仅加深了自己对 TLS 的理解,还顺带赚取了声望。

所以,沉下心,多花一些时间去看书,学习。学习一手的知识,看专业经典的名著,而不是看经过别人总结汇总的二手知识。这点很重要,学习没有捷径,不要想着一步登天。当你学习领悟之后,分享出来,会有更深的理解。那些和你一样花了时间专研的人看了你的文章,会和你产生共鸣,或者有所启发。那些没有花时间学习的人看了你的文章,也许会是他的一个入门指引,为他打开了一扇窗。

分享即提高,通过分享,收获最大的是你自己。很庆幸,在我刚工作的时候,就有人告诉了我这一点。他就是我的良师益友:TinyFish(外号鱼头,中文名就不写啦),出来创业做游戏也是和他一起的。在他身上,我学习了很多。他常常和我说,有时候自己问题想不明白时,拉上别人,在和别人叙述分享问题的过程中,突然就能发现问题所在,找到解决的方法,别人甚至没有说一个字。因为你在叙述的过程,你的大脑在经历不断的思考、总结、梳理的过程。一个你想不明白的问题,通过和别人分享,你能自己找到答案。一个你以为想明白了的问题,通过和别人分享,你会突然发现,之前所说的,都是错的。

以上就是我这篇文章想要分享的内容,通过写这篇文章,我又对分享本身理解更深了。你呢?
作为程序员,你需要拥有的几大素质! 前言 成为一个专业人士是所有程序员的目标,近几年的工作经历,近距离观察了很多大公司的大佬。有幸与其中的一部分一起工作。在此分享大牛程序员的行为风格以及我自己的所思所想,希望对大家有所帮助。 特此声明:此为我个人主观观点,不喜勿喷 一.你应该承担怎么的责任 这是专业和不专业的分水岭。对于一般的程序员来说,责任就是及时、高质量的完成任务;对于 一个领导者来说,其责任就是统领全组,合理安排任务,让组员各... 阅读详情

相关推荐

基于Zynq的便携式γ能谱仪设计与实现

数字多道分析器(DMCA)是核辐射能谱测量的核心设备,其本质是将探测器输出的模拟脉冲按幅度数字化分道,构建能量-计数分布曲线,从而支撑放射性核素识别与定量分析。其技术原理依赖高速采样、数字滤波成形、基线恢复与峰值提取等关键信号处理环节,具备高分辨率、优线性度与强抗干扰能力。在环境监测、核安全巡检与野外地质勘探等场景中,对低功耗、小型化、实时性提出严苛要求。本方案采用Xilinx Zynq-7020异构SoC架构,融合FPGA实时数字信号处理与ARM嵌入式控制,实现软硬协同优化,兼顾算法精度与工程落地性,为国

weixin_33173126的博客 190

一名程序员十年技术之路的思考与感悟

要成为一个团队的精兵,必须是专业知识过硬,经验丰富,指哪打哪,能够非常让人放心的完成领导安排的任务的人。要做到这些,学习和实践是最直接的路径。通常一个毕业生,刚进入企业的时候,所学的知识并不能 100% 胜任岗位的需要,这个时候,快速地学习补充自己的知识缺陷就显得非常重要。在企业里的学习和实践,要注意以下几点。   1.借助导师、同事资源。这样可以让自己快速解决遇到的问题,少走很多弯路...

dianpi2993的博客 401

【游戏开发】初识寻路&navmesh,探索RecastDemo

在手游时代,尤其对于大世界游戏而言,寻路的实现基本在专门的寻路服务器上进行。在众多寻路的解决方案中,recastnavigation是最为经典实用的一个,很多游戏甚至游戏引擎都采用类似的实现。recastnavigation项目自带了RecastDemo,用图形化的界面帮助用户认识寻路网格(navmesh)的生成以及寻路的过程。因此,作为初学者的笔者,也决定通过RecastDemo去初步认识寻路的机理奥秘。 构建RecastDemo 首先克隆recastnavigation项目,从文档中可以看到Recast

HiKariのTechLab 3050

程序员的反思

程序员的反思 程序员水平的高低无法简单的从一个功能完成情况来评定,同样一个需求,功能都可以完成,但是不同程序员完成质量会不一样,完成质量的好坏需要从多方面评定,可以参考这些条件:易维护,易拓展,高可用,高稳定,高性能,安全性,容错,风控 洞察身边的RD,可以归类出这几种类型: - 理论型,理论能力很强,对前沿技术略有了解,性格比较强势,需求分析和方案设计头头是道,对自己的设计的内容比较自信固...

u011552182的专栏 1611

别只刷题了!我用834分经验告诉你,华为HCIP大数据考试(H13-723)这样准备更高效

本文分享了华为HCIP大数据认证(H13-723)834分通关的高效备考经验。通过分析考试动态、题库验证技巧和章节优先级策略,帮助考生超越单纯刷题,系统化掌握核心知识点。特别强调实时流处理和离线批处理等重点章节,提供黄金90分钟临场发挥策略,助力考生一次性通过考试。

weixin_38168786的博客 458

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3395

程序员应知——学习、思考与分享

有人说,程序员是个苦差事,一辈子总是要不停地学习,学习新的技术,学习新的架构,学习新的工具,一旦一段时间不学习,就会发现其他人嘴里冒出来的新鲜词,自己已经搞不懂是什么了。的确,作为程序员,学习很重要。还有人说,做程序员是典型的脑力劳动者,每天都要思考,想怎样才能做出更易于扩展、安全性更高的架构,思考如何才能够满足客户的需求,思考如何才能够让自己做出来的程序可维护性更好,思考如何让自己的产品更容易被用户所接受,很多很多需要思考的问题。另外,每次做完一个项目,总是要思考一下在其中获得了什么经验和教训,学到了什么

凌云工作室 2万+

XPATH注入漏洞检测工具汇总

环境 > Python3.7。

墨痕诉清风的博客 742

学习、思考与分享的关系

本文转载自:凌云工作室 有人说,程序员是个苦差事,一辈子总是要不停地学习,学习新的技术,学习新的架构,学习新的工具,一旦一段时间不学习,就会发现其他人嘴里冒出来的新鲜词,自己已经搞不懂是什么了。 的确,作为程序员,学习很重要。 还有人说,做程序员是典型的脑力劳动者,每天都要思考,想怎样才能做出更易于扩展、安全性更高的架构,思考如何才能够满足客户的需求,思考如何才能够让自己做出来的程序可维护性更好,思考如何让自己的产品更容易被用户所接受,很多很多需要思考的问题。另外,每次做完一个项目,总是要思考一下在其

czyhsl 885

infercnv的实操

摘要: 博主在infercnv分析中遇到执行困难,外包服务不可靠(未按要求使用HMM方法)。通过优化策略(逐样本处理、精简细胞至1000个、固定随机种子)解决了运行问题,但HMM功能仍无法实现。最终参考Cell期刊标准设置阈值完成分析,后续将继续更新进展。该案例凸显了生物信息分析中自主优化的重要性。(150字)

xiaoyusang的博客 308

uniapp [安卓苹果App端] - 解决支付宝支付报错requestPayment:fail [payment支付宝:62009]未知错误,使用uni.requestPayment支付报错排查方案

uni-app支付宝,uniapp支付宝沙箱支付报错,uni.requestPayment,uniAPP App支付宝支付提示错误requestPayment:fail [payment支付宝:62009]未知错误,UNI-APP支付宝报错"code": -100,uniapp 解决安卓App使用uni.requestPayment实现沙箱环境支付宝支付报错,uniapp安卓app使用支付宝的沙箱环境支付时报了这个错,安卓端app支付宝支付,在沙箱测试环境测支付,提示“商家订单参数异常,请重新发起付款,选择

🏆 前端领域优质创作者 9609

程序员如何提高影响力

影响力能有效表征你所在领域或行业的知名度、号召力、被认可度。影响力是一种无形的优质资产。 2020年华为的天才少年最高档年薪获得者左鹏飞的事迹大家应该有所耳闻,一个博士毕业生入职华为200W年薪,翻开他的履历,原来他在博士期间以第一作者发表10余篇高质量论文,更是以第一作者在计算机操作系统最顶级学术会议之一的OSDI和计算机体系结构顶级学术会议上各发表一篇论文,其影响力可见一斑,高年薪入职华为便是水到渠成的事。 牛人的成功或许无法复制,但能激励我们努力去打造自己的影响力,那作为一名程序员该如何打造影响力呢?

中间件兴趣圈 7256

你知道吗?其实这些都是AI——农作物监控AI

随着全球人口的不断增长,粮食需求日益增加。为了应对这一挑战,现代农业正在迅速转型,引入了许多先进技术来提高生产效率和作物产量。在这些技术中,人工智能(AI)在农作物监控方面的应用显得尤为重要。通过利用AI技术,农民和农业专家可以更好地管理农作物的生长,预防病虫害,并优化灌溉和施肥方案,从而实现农业生产的智能化和精准化。

AI科研社 367

程序员思考力

优秀工程师必备的一项技能,你解锁了吗? 本篇文章来自【阿里技术】微信公众号推文,lz觉得写得不错,希望大家喜欢。这个公众号推送的文章和技术还是比较好的,有兴趣的可以关注一下。 原文地址:https://mp.weixin.qq.com/s/q05Df_TKWUSlhK6V6KTrfw 原创: 岩动 [阿里技术] 阿里妹导读:很多程序员在工作一段时间后会遇到迷茫期,虽有技术傍身,也难免会产生焦虑,反...

json转xml 334

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

程序员的思考:分享即提高

从今年2月底开通微信公众账号以来,到现在差不多9个月的时间,订阅的用户差不多有 500 人了。这个数字当然不能和那些大 V 的订阅数相比,甚至那些大 V 在文章结尾处给别人的账号做个推荐,一天的订阅数也许都会超过我的。但是,我对 500 个订阅数的结果是很满意的。 记得最早开通公众号那会,我还在上家游戏公司。我离开公司前给程序组的同学做了一次关于...

weixin_33924770的博客 219

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

一个程序员对2020年的一些思考和总结

一个程序员对2020年的一些思考和总结 profile-avatar Python123 2020-10-08 14:34 首先这篇文章不等于”2020年总结”,因为2020年还没有完全结束,还有近两个多月得时间。通常来说,我的2020年总结会在2021年初以及2020年末写的,内容格式都是今年计划完成情况+来年计划制定等。 国庆假期游山玩水了四五天,该玩的都玩了,没玩的,等有时间了再计划。 每年在某个特定的时候,总感觉要写些什么东西。 就像在2018年的时候,感触非常深,写下了这篇作为程序员的思考与反省,

LLand520的博客 5573

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

老程序员教你如何提高开发效率、成为大神0——从业余到专业

本人自1996年开始学习编程,经历过很多痛苦和挫折,在2007-2012年期间一直在做软件外包,也就是俗称的野战军,2013年才正式入职一家企业的软件开发岗位,2017年正式入职一家国产ERP市场占有率第一的上市公司做软件开发。我的人生已经经过了30年,生而为编程,在这条职业发展道路上用去了24年,甚是可惜。为了能够帮助更多的人,我这里总结和整理了提高开发效率的人生经验,供大家参考。

宜春 3921

程序员如何提高自己的能力

前言 本文是笔者自己的感悟和思考,应该还算是比较有趣的内容 文章底部有书单和资源 正文 作为一个程序员,能力是立身之本,所以长久以来在我的意识中一直存在一个问题: 程序员应该如何提高自己的能力? 这是一个很容易收智商税的主题,网上有无数的人写了无数的文章,录了无数的视频音频来讨论这个问题,吸引了很多想要变强的,正直向上的程序员、准程序员。甚至各种培训机构,就是通过满足这种需求来获得经济上的收益...

ALEX的博客 1万+

程序员的成长之路——道和术的思考

今天想与各位专家讨论的是——《程序员的成长之路——道和术的思考》。在开始之前,我想定义几个名词,一个是码农,一个是程序员。码农就是敲代码的人。程序员就是会思考的码农。本次讨论借用道家的两个概念,道和术。道用于解决原理问题,是方法论,术用于是解决技术问题,是方法。

zhh763984017的博客 2347

程序员如何提高自己?

程序员如何提高自己?

xiqng17111342931的博客 2387

程序员如何搞副业?分享做过的7个副业

没背景、没资源,做的都是些大家都能做的小项目。整个时间跨度也近10年了, 基本是当下什么火就干什么。想副业搞钱的朋友,还是建议打开思路,尽量做一些能运营的小项目,如果发展起来一个,就可以变成自己的创业项目了。目前2024年,已注册公司,计划把五六七由副业变成主业来运营。了解过很多可操作副业,写了相对花时间多的几个。

发现生活,分享智慧,一起成长! 2056

关于程序员如何提高自己的一些感言

标签:程序员, 提高, 高手, 目标, 基本功, 源码, 思考, 交流, 编程风格         我个人有接三年的软件开发经验,也做过不少大中型的项目,尝过成功的滋味,也体验过失败的痛苦,自己感觉还达不到高手的境界,和真正的高手还有不小的差距。要想提高自己首先不能满足于现状,我始终相信better enough is not better enough,要为自己树立一个更高的目标。有了目

LonelyWinter的专栏 9400

一名Android程序员的自我修养

前言 “没有小角色,只有小演员”,这是出自周星驰电影《喜剧之王》中周星驰扮演的尹天仇随身携带的书–《演员的自我修养》。 最近达叔的离世,让我感慨万千。作为在中国土生土长的90后,也算是看着达叔的电影长大的,尤其是他和周星驰合作拍摄的电影,给我带来了很多的快乐。 这段时间我又重新温习了一遍《喜剧之王》,在了解了达叔的人生经历之后,回头再细细品味达叔的作品,让我不得不敬佩达叔的职业素养:即使常年只演配角,没有多少戏份,却依然不忘磨练自己的演技,把每场戏都当作主角来演。只凭借出演配角和小角色就能出名的,相信.

xuexiangjys的博客 4997
上一篇: Java NIO 系列教程
下一篇: Java编程思想读书笔记(02)
Footloose_
博客等级 码龄10年 254粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值