为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)

《软件报价全攻略:深入剖析与精准决策》:此文为AI自动生成 软件报价绝非仅仅是一个数字,它是一个复杂的体系,涵盖了众多因素,这些因素共同决定了软件项目的成本与价值。 首先,软件产品的研发费用是影响报价的重要因素之一。研发过程中,人力资源成本占据了很大比重,包括开发人员、测试人员和项目管理人员的工资。以一线城市为例,人员成本相对较高,若项目涉及金融类行业开发,成本也会因专业要求更高而增加。同时,硬件和软件资源也是不可忽视的部分,如必要的开发和测试工具、许可证等。 软件的类型和复杂性也对报价有着显著影响。大型和复杂的项目通常需要更多的时间和专业知识来开发,因此价格会更昂 阅读详情

转自阿朱:http://blog.youkuaiyun.com/david_lv/archive/2008/06/09/2525898.aspx

前段时间,写了一个开发、实施、服务费用计算三部曲。

引起了网友的大讨论。

软件如何报价如何定价一直是软件业讨论的热点。这算捅了马蜂窝了。

有个网友给我一个评论,很值得深思和大家讨论:
刚开始写得不错,越写越觉得离谱,不是三五个人了,和教材接近了。现在做项目的价钱是我们能够左右的吗,你算着80万,人家招标价60万,别人报30万,你干不干。不干有人干。既要吃饭回扣项目又要做好,这是真的。我想问一下,中国的软件项目需求到底多大。我觉得你在算你自己的帐,算得不错。可是人家客户人不认账。中国不光你这一个公司。

我经常说:我们是商业软件公司开发。我们的编写代码工作是为了更少的工作,但是能赚更多钱。所以,不能让我们减轻工作,不能让我们多赚钱的工具或方法或技术或管理制度,我们一概不用。

所以,我们这个开发费用、实施费用、服务费用的计算表也不是为了什么好看或什么正规性,我们都是为了解决我们自己的问题。我们很现实。我们设置售前,就是为了怕销售乱说乱答应客户,最后项目实施周期长难度大需求变更多。我们做这个表格,也是为了怕销售乱报价,最后糊弄签了单,开发部实施部和客户一见面去执行,才发现那点钱根本不够项目成本。最后擦屁股挨老板骂的还是开发部实施部。而销售部由于和老板关系好,板子是打不到的。

大家都知道,现在这种做方案投标讲标签合同都在走浮面工作。知道项目签了合同,真正开发软件和实施软件的人才知道有这么个客户单子,前期都是销售在跟。而销售,对开发、实施、服务这些细节过程和成本都不了解。而销售跟单的人也往往是企业的决策拍板人,对软件功能细节也不看。而且,现在做行业管理软件,纯粹听到招标杀进来的非常少。都是这关系那关系过来的,都是关系认识。所以方案呀,讲标啊,都没有细节疑问,做方案也没有细节调研。签了这么个结果的合同额,真正项目执行起来,需求到底会变化多少,项目周期真正会多长,真正项目结束后是赚是亏,都是一个未知数。

反正已经签单,亏不亏是老板的事。而且是项目结束的时候才能知道。况且,项目的执行都是开发部和实施部门,他们耗费了项目资金,以后项目亏了,也是他们的问题。我把单子签回来了,我是从客户口袋掏出钱拿回公司的人,没有我,公司那些程序员他们一点用也没有,就知道天天等发工资等我把项目拿下来才能工作。这就是销售的想法。

所以,在软件公司,销售地位很高,开发人员居然地位很低。被老板骂怎么还不完工,被客户骂怎么我们的需求还没有做。

代码是老板看不懂的。老板就看功能做完没做完(而且做完没做完,也只是看一下开发人员的操作演示,然后再问问项目经理具体实际进度,真正客户要求的功能做完没做完,只有项目经理和程序员自己知道)。尤其是软件,越表面简单,其内部其实越复杂。除非这个功能本身就很简单。一般都是,为了把复杂的事情屏蔽了让计算机自动处理了,要写很复杂的代码,而呈现给用户的是简单的操作,只有这样,才能提高用户的工作效率,这就是软件的好处。但老板看不见也看不懂内部代码。老板就看见这么简单的操作功能,你怎么两个星期都没有做完?

所以,我们过往很多工作,不仅仅为了我们自己工作需要,我们也是为了让老板看到我们的劳动成果。所以我们编写了设计文档、测试案例、测试报告、帮助文档、演示版、需求管理库、BUG管理库、每一次版本的归档源代码和文档,并且也用了专门的开发部服务器,表明里面装的都是公司最重要的财富:软件源代码。老板一看公司最重要的产品源代码都在上面,文档也在上面,各个版本都在上面,就放心许多。(老板越疑心,他就会派自己的心腹亲信来监督来约束,并且给与资源越约束越谨慎越拖延,怕这帮不知道整天在忙什么的程序员家伙把自己的钱给乱用了。所以,开发部一定要把老板能看懂的东西主动的完整的呈现给老板,让老板减轻疑心。这是很多开发部主管都没有做的事情,所以开发主管往往和老板关系很僵硬,最后越发资源少干事受阻碍,最后老板也看不顺眼他,他也看不顺眼老板,从此分道扬镳)。

我们出这个开发费用、实施费用、服务费用计算表的初衷就是为了让老板明白我们确实干的很辛苦,让他明白一个管理软件不是他经常画单据表格和报表统计用的EXCEL。这个软件,确实需要这么多步骤,这么多人,这么多天的配合才能完成。

但是,我们不能这么和老板说。老板对员工吃多少苦不感兴趣。老板感兴趣的是赚多少钱。所以,向老板进言,就要从多赚钱这个角度去讲。

我们就讲了将鸡翅鸡腿脖分开卖,比卖整鸡要合算的多。而且,咱们这样报价有根有据,客户就不会心虚的拦腰砍五折了。因为他觉得每一笔帐都很实在,实在没法讨价还价。

我们可以再深入思考一个问题:客户是怎么决定自己招标价是60万?客户是企业,它又不是软件公司它肯定不了解软件公司的成本构成和项目人员配置。它怎么知道解决他的问题的信息化软件,60万就可以搞定。

原因可能有两个:
一、看自己企业这几年赚不赚钱,自己的老板一向重视不重视信息化,这个项目重要不重要,自己企业能掏多少投资。
二、同类型软件,询问了一下自己认识的朋友,也根据自己过去的信息化的费用经验,大致在市面上的价格也就这个数。

于是,管信息化的CIO,60万拍脑门决定了。企业老板一看,嗯,能出的起。就这么定了。

就这样,一个60万就定了下来。

但是,这个60万决定的过程漏洞百出:
一、确实是,企业有多少钱就做多少事。但是需要信息化来解决的问题,到底需要多少钱才能真正做好?谁知道怎么计算到底需要多少钱?如果企业的CIO不知道怎么计算得来,那么他选定的最后软件公司,只能是报价最低或演讲最精彩的,或者就是他的熟人,确信这个熟人给他好处,而且不会把项目做砸了连他都受了牵连。
二、中国的信息化一直在不断规范化,成熟化,专业化。所以企业CIO询问的周边朋友,自己过去的信息化费用经验能适合现如今的价格变化吗?(我母亲老提2000年的菜价和房价,对现在东西的价格觉得太离谱了)

而软件公司呢,不去调研客户产生问题的现状,也不去思考如何解决问题,也不去计算解决这些问题的费用。也跟客户一样拍脑门定报价。

为什么软件公司也要这么做呢?

你如果真正去正规的做事,可能解决问题计算出来是100万。你怎么办?你能不要单子么?你要么往下砍功能,使一些客户问题无法得到解决或无法很好得到满足。要么,你就说服客户这个报价很实在,解决你的问题确实需要这么多钱。

客户会说什么?
一种结果:因为客户的60万报价本来就是拍脑门的,对60万能解决问题本来就不确信。所以他会去听为什么软件公司报100万。软件公司对问题的分析理解和解决方法是在往大了讲呢,还是在讲实在话?
一种结果:不好意思,我们只能掏60万。

对于,第一种结果,走势很好。因为他愿意去真正踏实下来去听去分析而不是拍脑门。你报的有根有据,他会去调整自己的底价。如果他确实预算只能这么多只能掏60万,他会去平衡缩减一下项目范围。我们前面也都讲了,开发、实施、服务都有高级、中级、标准三个层次的人员,费用是不一样的。而且很多项目都是可选择的。可以企业自己内部自己做,无须强制购买。客户会去调整自己的选择项目和选择的层次的开发实施服务人员。

如果竞争对手报30万。他是怎么做到30万的?是他的开发实施服务方法先进,所以成本低?是他的开发实施服务人员工资低出差费用低所以成本低?如果竞争对手确实方法先进于你、人员费用低于你,那么你报30万肯定是亏死,你是在这单子上成功不了,自认心服口服。如果都不是,那这个竞争对手也会有两种可能结果:
结果一、报价低于实际必要成本,亏本关门。
结果二、为了不亏本,那就降低项目质量,糊弄完事。

对于这两种结果,第一种结果可能性小,因为谁也不想越做越关门。那只有第二种结果:糊弄了。所以,国内现在管理软件价格越来越低,关门转行的软件公司也不在少数。糊弄人的项目比比皆是,惹的企业都不敢上软件都已经不相信软件能解决问题。

根源在哪里?

根源就在企业不知道软件成本构成,乱设底价。而软件公司,为了得到单子,报价更低于客户的底价。就这样,一轮轮的循环,价格越来越低,软件公司为了生存,不断糊弄事保本。最后直到糊弄的客户都知道这家软件公司是个骗子了事。

要么糊弄到最后关门,要么创新解决问题突破恶性循环的价格樊笼。

我们现在就是这样报价的。你也可以试试。但前提是:你一定要有售前人员和销售人员一起配合打单,售前人员调研收集分析客户现状和问题,并且提出解决方案,然后再和销售一起完成销售报价。销售人员会在理性价格和感性价格之间做一个很好的平衡,既照顾公司项目完结盈利,也照顾客户价格心理承受线。

保姆级教程:手把手教你从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件(附网址规律总结) 本文提供从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件的详细教程,包括路径解析、版本号确定和下载命令示例。特别解析了GRCh37的特殊存储结构,并分享批量下载、文件校验等高级技巧,帮助生物信息学研究者高效获取基因组注释文件。 阅读详情

相关推荐

Disk Drill 使用教程

Disk Drill只需单击几下,即可恢复USB闪存驱动器上已删除的数据,包括丢失的照片,文档和其他文件类型。Disk Drill是真正的多合一应用程序,可在Mac上恢复闪存驱动器。Disk Drill将自动应用最佳的笔式驱动器恢复算法来恢复Mac数据。 USB闪存驱动器是一种传输和存储信息的好方法,但是如果错误地丢失或删除了存储在其中的文件,会发生什么呢?当您需要Mac的闪存驱动器数据恢复软件时,Disk Drill是您的最佳选择。Disk Drill将扫描您的USB闪存驱动器(也称为笔式驱动器)并查找

zjj778899的博客 1万+

软件项目管理——谈谈软件定价

公司开发了一个应用平台,一直在讨论怎么定价?也就是怎么更合理地向客户收钱,让客户心甘情愿地掏腰包。 我们在计算成本的时候,花了很多时间。后来仔细想想,其实必要性不大,因为我们花时间计算的成本项只占总成本很小的比例。举个例子:总成本大概是60元/月,但是其中一个项就有30元/月,我们计算的这10项,加起来也只有1元/月。稍微计算一下,就知道相差30倍,具体到单项相差300倍,所以根本就没有必要费时费力去调参数不断去算。 当然我的想法不一定对,不过也让我想到到底软件或软件服务怎么收费。我后来想了一.

mightyyao的博客 3112

射频工程师笔记---射频通信基础

回顾一下移动通信技术的发展,其实是互联网和通信技术的融合过程。在这个过程中,很多应用都在不断加入其中。比如计算机跟通信的融合产生了互联网、互联网跟手机的融合带来了移动互联网。手机可以看杂志、看视频、听音乐,于是又出现了内容服务产业;再后来,电视音箱等设备也能联网,于是网络跟家电又产生了融合。所以应用的出现总是在融合其他产业。在1995年,比尔·盖茨在《未来之路》一书中首次提出:在未来...

多年硬件从业经历,热爱学习,记录生活! 2万+

软件产品的定价策略:从免费用户到付费客户

定价不仅仅是数字,更是一种战略表达。💡 它决定了你吸引谁;📊 它反映了你的自信程度;🧭 它塑造了用户对你价值的认知。一个好产品 + 一个合适的定价体系 = 可持续的商业模型。你不需要定得最贵,也不需要定得最低。你需要的是让客户觉得:“这个价格,我能理解,也愿意付。价格不是用户和你之间的鸿沟,而是连接“功能”与“价值”的那座桥。当你真正理解自己的价值,定价就不再是问题,而是品牌的延伸。《技术产品的市场推广与品牌构建:让客户主动找到你》

wnhyang的博客 1225

从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

weixin_28327051的博客 715

超级详细的H3C模拟器HCL的交换机Telnet服务配置过程(图文)

VC++2017 MFC关于一个电话机房配线架进线出线节点数据库管理的程序 机房数据库原来是一个EXCEL表,查询,输入数据不方便。现用access数据库ODBC访问。平常没编过程序,编个程序练练手。记录一下学习中的问题,和解决方法,供大家分享,讨论,以便共同进步。希望多提宝贵意见,携手提高代码水平。 程序写的很不规范,代码冗余,显得程序臃肿,代码重用性差。发表这篇博客的目的也是为了改进这个程序。CListCtrl 单元格可以编辑,有Combo Box下拉列表功能。使用PreTranslateMe

techcai的博客 1万+

19 SaaS 产品的定价模式

关于SaaS的特点以及类型等介绍请参考。

PeNg_Dr1988 1692

lattice Diamond Programmer程序下载

Lattice Diamond Programmer(支持Lattice FPGA与CPLD程序下载)

qq_44385725的博客 5181

读后感:为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)

读后感:为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)  http://blog.youkuaiyun.com/david_lv/archive/2008/06/09/2525898.aspx读后感:其实用软件的企业和开发软件的企业得目的都是一样的,就是为了盈利。恶性竞争导致一个后果就是两方都没有实现目的。或许无论什么行业在中国都会带有中国特色,但是双赢的中国特色怎么试

涩道 591

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1552

ASPICE标准快速掌握「2.1. 过程能力概览」

一个项目的质量流程是否做的好最终会需要由一个指标来确定,ASPICE将其称为过程能力(Process capability),过程能力是一个综合的判定概念。而为了实现这个概念,ASPICE建立了一套完整的过程评估模型(Process Assessment Model),通过这套评估模型最终就能得出过程能力的最终得分。项目组根据这个得分不断改进和优化得分不足的方面,从而约束整个流程的各个方面来间接提升项目的最终质量。这里有三个关键术语:其中最主要的就是PAM,即过程评估模型,由ASPICE给出,该模型可以看成

雪云飞星的博客 1184

为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二) ...

前段时间,写了一个开发、实施、服务费用计算三部曲。 水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八) 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九) 将服务费用DIY到底----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十) 引起了网友的大讨论。 软件如何报价如何定价一直是软件业讨论的热点。这算捅了马蜂...

titanxi 133

记录Android Studio连接华为(nova)手机鸿蒙系统踩过的坑

鸿蒙系统的华为老机子比较麻烦,坑有点多,兄弟们加油!

沉迷单车的追风少年 7923

为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)...

前段时间,写了一个开发、实施、服务费用计算三部曲。 水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八) 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九) 将服务费用DIY到底----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十) 引起了网友的大讨论。 软件如何报价如何定价一直是软件业讨论的热点。这算捅了马蜂窝了。 有个网友给我...

sabolasi 110

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九)

咱们书接上回。水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八)上次咱们讲完了开发费用的计算,很多人在后面跟帖在那里算费用。有人说:你把程序员都不当人,94天,一天都不休息啊。我想答曰:94天,是工作时间。不算双休日在里面。也就是说,实际的开发周期长度是94+3个月之中的所有双休日。我只所以按照94天算,是算94天工作日,并没有把双休日都算进去。你试着想想,你都休息

阿朱=行业趋势+开发管理+架构 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

三五个人十来条枪 如何成为开发正规军(十二)

转载: http://david-lv.iteye.com 前段时间,写了一个开发、实施、服务费用计算三部曲。 水清则无鱼--走出软件作坊:三五个人十来条枪 如何成为开发正规军(八) 实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九) 将服务费用DIY到底----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十) 引起了网友的大讨...

myharmony的专栏 163

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

走出软件作坊:三五个人十来条枪 如何成为开发正规军 链接[收藏]

三五个人十来条枪 如何走出软件作坊成为开发正规军 走出软件作坊:三五个人十来条枪  如何成为开发正规军(二) 项目经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三) 人,是人,真的是人---走出软件作坊:三五个人十来条枪 如何成为开发正规军(四)

tiny_lk的专栏 752
上一篇: 物以类聚,人以群分--走出软件作坊:三五个人十来条枪 如何成为开发正规军(十一)
下一篇: 敢问路在何方---走出软件作坊:三五个人十来条枪 如何成为开发正规军(十三)
evilmojo
博客等级 码龄18年 16粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值