转载:新手的第一个工程的总结 ,经典!

使用Keil MDK运行第一个STM32程序 由于Cnblogs使用livewriter发表文章排版比较方便,因此最近的博客首先通过cnblogs发表。 原创文章,转载请注明出处。 欢迎大家针对本博客文章提出宝贵意见。 关于使用固件库建立工程请参考 使用Keil MDK以及标准外设库创建STM32工程 关于固件库的学习请参考 STM32固件库详解 1.1.1 使用Keil MDK运行第一个STM3 阅读详情

 

孔子说:“学而不思则罔,思而不学则殆。”从我做项目的经历,我深深感叹古人闹腔邸?

去年我毕业设计时候做的一个项目是毕业设计管理系统。当时老师给我们的要求是用Jsp 和 Javabean来实现。我主要负责项目建模和Javabean部分,后来负责数据库的同学被SARS困在家不能返校,所以数据库部分也由我来完成了。当时对java的知识是非常贫乏的,只有简单的语法基础,连jsp、 javabean都是第一次听到过。不知道从哪里开始,于是就研究老师给的一个非常简单的演示项目,首先觉得javabean是个比较简单的东西,于是就先开始分析用户需求。

需求怎么来描述呢?由于学校教育的局限,加上自己研究了很长时间高数,政治,英语(干什么用大家都明白吧),造成了知识的严重匮乏。我就以参加毕业设计人员为中心,建立他们的需求列表。但是这样的需求描述是非常片面的,几乎都是静态的需求,而且很难设计几个用户的交互过程,和某些状态的改变。而且这种需求是否真正符合需要是个问题,所以我立刻和同学一起设计web界面,目的很简单,因为用户的需求都是通过界面来实现的,对界面的设计能涵盖最终提交用户的功能,而且还能发掘很多非用户的需求。这样我在实现这些功能的时候会有数。在一年后当我仔细看过用例分析,uml后感觉是如获至宝。心头的结全部打开。

建模该怎么建?当时真是什么概念都没有,虽然知道uml,但是仅仅知道皮毛。于是我就很简单的从对象的角度考虑问题,首先找毕业设计管理系统中涉及的人员,这个是很明显找出来的,涉及到学生,教师,管理员,进一步提取出项目对象,各个人员之间通讯的消息对象,毕业设计文档对象,等等。接下来设计数据库表,由于学校教数据库的时候只有讲述了ER图到关系模式的转化,而根本没有讲ODL到关系模式的转化(现在看来,ODL应该更好,对理解O/R Mapping有更多的帮助。)于是就画ER图,建立各种表,设定主键,外键,等等。

我遇到的首要问题就是学生,教师,管理员该怎么办,每一个对象建一个表,似乎也没有什么问题。但是在建立消息对象的时候就有问题了,因为消息是要在学生,教师,管理员任意两者都能传送的,我建消息表的时候是这样设计的:一个消息的内容,消息的发送人,消息的接收人(消息内容和发送人一个表,为解决冗余接收人单独一个表),这样这个消息就有很大的灵活程度了,消息发送人可以是三种角色间的随便一种,更进一步,这样的消息可以是系统生成的消息,而且接收者可以是随便哪种角色。但随之带来的问题是:消息发送人、接收者该去参照谁呢?显然填一个发送者、接收者的id是不够的,必须连发送者的角色也填上。第二种方法,每个角色有一个收到消息的列表,让它去参照单一的消息表id,这样也能解决问题。第三种方法,把学生,教师,管理员合并成一个用户表,那么消息发送人,接收人只要简单的参照一个通用的用户id了。这种合并子类的方法会造成教师,管理员的行有些null值,但是考虑到教师和管理员的数目远远小于学生的数目,所以这样的冗余是忽略不计的。最后我还是选择了最后一种方法。不过我还是觉的是对象模型向关系模型的一种妥协。

接着我着手设计javabean,访问数据库用的是单纯的JDBC。因为我对前台界面要访问一个对象的哪些属性是不了解的,事实上也不该了解。所以我只能从数据库取出一个完整的对象,让他来决定究竟要访问哪些属性。而且对对象的修改也是这样,前台修改好新的对象的属性,我来进行更数据库的同步。于是我的javabean就出现了这样的方法:load()、 store()、 update()、delete()这样的对象和数据库表同步的方法。这在一年后的今天看来,实际上我已经自己做了一个O/R Mapping的工作了。当时自己做这样的O/R Mapping是相当痛苦的事情,而且用的方法也是最粗浅的,就是整个对象更数据库同步,即使没有修改的属性也同步,所以要同步的话,必须要先把对象从数据库取出来,修改后再写回。而且要求所有属性必须是nullable的non-primitive类型。第二个问题,对表中的外键怎么反应到bean中?比如每个学生有一个辅导教师,在数据库中很明显学生表需要一个外键参照教师id,但是在StudentBean中教师属性是写Teacher对象呢,还是Teacher id值呢,按照面向对象,很明显应该Teacher对象,但是我就觉得这是个多么heavy的事情呀!再想想教师情况,一个教师有一个Collection的Student对象是多么“重”!意味着load一个教师要load所有的students。于是我采用的方法是:还是用对象,比如teacher 的学生属性,还是一个collection Student对象,同时提供了一个loadStudents()的方法,load teacher对象的时候并不load 学生属性,只有bean的用户显式调用loadStudents()的时候才会加载一组student对象,这在现在看来似乎我自觉不自觉的实现了lazy loading?

现在审视当时编写的javabean,犯的最大最大的错误就是把data access object和business workflow混在一起了。比如把教师所有要调用的功能都放在教师对象里面,而有些功能有时是要涉及几个bean的。现在看了简直是惨不忍睹的设计,虽然当时也困惑过,但是却没有动动脑筋来解决,我现在看了session bean 的思路时,觉得是那么的舒畅、自然。

当时困惑的还有关于jsp的处理,jsp只是负责显示的,但是为什么一个jsp提交的数据要给另外一个jsp去处理呢?这是很不舒畅的做法,于是有了最初的servlet做控制器的想法,但是当时顾不了研究那么多,也没有最终实现,毕竟前台不是我负责的。当我现在知道了Structs,MVC Model2的时候,我以前的困惑都随之解决。又一次感觉非常舒畅。

以上是我一个新手的第一个项目的一些情况,是在非常闭塞的环境里面做的,上网都是电话卡拨号,根本没有接触到主流技术,但是正是这种环境下积累的无数困惑,使我遇到EJB、Hibernate、Structs的时候如饮甘露,迅速的吸收了他们的营养。否则我想学习这些技术无疑是很耗时间的,因为根本没有更这种技术产生共鸣,不知道他们搞那么多框框究竟想干什么,而我产生了一种共鸣,他们这些框框,正是开我心头疑惑的锁。

又回到开头孔子的话,事实上我在做项目中,一直都是按自己的思考方式在“思”而没有去“学”,所以常常感到疲倦而无所得,即“殆”。但是如果不实际自己去动手做,而光光学j2ee,必然会很迷惑,即“罔”。我感觉先有困惑再有解决,是掌握技术的十分有效的而且巩固的方法,而且很有创造性,是属于归纳的思考方式。所以碰到问题,首先需要想想按常理该怎么去解决,再去寻找别人怎么解决的,这样自己提高会十分迅速。
 

 Re: 新手的第一个工程的总结(第一次写文章,请前辈们指教)  发表时间: Oct 1, 2004 3:47 PM   回复 
 
发表人: napoleonn    发表文章: 20 / 注册时间: 2004-09 
现在我正在用EJB、Structs来重写那个项目。虽然我对整个需求已经相当清楚,毕竟有了第一个项目作为原型,但是我还是试图使用比较规范的方法来设计。首先分析了很多use case,并且使用Rational的RequisitePro来跟踪需求的变化。接着又使用Rose对use case画了use case diagram。对关键对象交互过程画了 sequence diagram,对某些对象的状态画了state diagram。最后很自然的导出了最重要的class diagram。

我现在最大的困惑在Entity Bean上面,建模的时候很自然会有一个User对象,Student, Teacher, Manager 对象继承自这个User对象。那数据库表怎么设计呢?第一种,三个对象三个表,对应StudentBean TeacherBean ManagerBean三个EntityBean。第二种,三个对象一个表,只有一个UserBean。第三种,把User单独一个对象,那么就是四个对象四个表,这样一个子对象,要映射两张表EntityBean不行吧。
暂时不管究竟用什么设计,来考察一下文档对像DocBean,我们主要看看它的cmr部分,一个cmr是author 属性,它应该是三种角色对象中的一种,问题来了,如果三个对象三个表,那么我这里的cmr怎么写?
public abstract StudentLocal getAuthor();?
public abstract TeacherLocal getAuthor();?
public abstract ManagerLocal getAuthor();?
考察第二种,三个对象一个表,只有一个UserBean。那这个是相当简单的只需要
public abstract UserLocal getAuthor();
那最后只有第二种方式才能解决问题,就是只有一个User对象,于是我为了使用EntityBean不得不对我的模型进行修改,把原来清晰的三个对象揉合到一起,虽然说以后某个student变成了teacher 或者manager可以很方便的升级,但是这种情况在我这个例子里面是很少有的,而且数据库这种合并子类的方法给teacher,manager形成了很多的null值,虽然这是忽略不计的,但是总不是优雅的做法,最关键的是我的对象模型又一次向关系模型妥协了。

CMR的另外一个问题是,要CMR必须把所有相关的Bean放一个包里面,在一个xml文件里面配置,我的项目里面的entity bean都是要更user有关系的,那我都需要把这些bean打成一个包,用一个xml描述!我的还是小项目,如果一个项目有100个entity bean,这些entity bean都是相互关联的,那我要把这100个entity bean放在打成一个包,用一个xml配置!那这个xml文件该有多长!一个小小的错误全部完蛋。

看来Entity Bean确实如很多人说的那样不是十分灵活,我也开始倾向于用hibernate来做持久化了,但是我需要有足够的灵活性,我想继承和多态的支持还是很重要的,这样才能真正是"object-oriented domain models"方式,而不是以数据库表为中心的方式,引用Hibernate的一句话"Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier"

我对AOP也是十分关注,因为它实在是太激动人心的概念了,有了AOP那么我们还要容器干什么,容器的功能完全可以通过AOP来实现,就像Spring框架,除了没有分布式外几乎都能支持吧。而jboss4.0也已经通过AOP实现了。考察我的项目,我发现有一个这样的需求需要满足,就是:在执行某些business logic之前必须要检测对这个方法的调用是否超过期限了,比如学生去选择研究课题,如果选择过了就不能再次选择,虽然这个方法可以由前台很简单的解决,但是我觉得在业务逻辑层防止这种行为的发生是业务完整性的一个部分。而通过AOP,把这样一个很多方法都要调用的公共功能作为一个aspect是很好的。我的问题是在容器中运行的EJB能够用AOP吗?在Jboss4.0里面各种EJB都是通过AOP方式来提供服务的,似乎我自己多加一层业务层面的服务应该是可行的(使用jboss aop),但是这样的EJB放在别的容器里面运行会怎么样?会影响到容器对EJB的干预吗?请各位前辈指点。
 
 

 Re: 新手的第一个工程的总结(第一次写文章,请前辈们指教)  发表时间: Oct 11, 2004 5:43 PM   回复 
 
发表人: Standino    发表文章: 1 / 注册时间: 2004-10 
我也在思考這個問題,不過我覺得ejb更多的是提供一個服務。
所以在建模的時候應該是定義一些服務的接口。具體某個對象例如Student 可以就是使用一個簡單的java類。現在不是有這樣一個趨勢使用POJO嗎。
小弟是班門弄斧了,言語不對的地方,請高人指點:)
 
 

 Re: 新手的第一个工程的总结(第一次写文章,请前辈们指教)  发表时间: Oct 18, 2004 10:18 AM   回复 
 
发表人: 极度深蓝    发表文章: 8 / 注册时间: 2004-09 
真是好文章,善于思考。在你面前我感到惭愧啊。能认识你吗?
 
 

 Re: 新手的第一个工程的总结(第一次写文章,请前辈们指教)  发表时间: Oct 18, 2004 1:52 PM   回复 
 
发表人: leeyangcn    发表文章: 3 / 注册时间: 2004-09 
先困惑再解惑,这个过程我深有同感。我以前是极端的完美主义,不是最新最主流的技术总是不懈一做,认为马上过时白费时间,后来也渐渐认识到这种想法的片面,多实践是很重要的,技术上的提高需要这么一个过程。
不过不知道你用的这么多Rational这Rational那,是不是自己装的,这些东西很贵,一般的公司里都没有的。而且刚毕业就能有机会正规的分析设计,也很难得啊。
 
 

 Re: 新手的第一个工程的总结(第一次写文章,请前辈们指教)  发表时间: Oct 18, 2004 3:40 PM   回复 
 
发表人: napoleonn    发表文章: 20 / 注册时间: 2004-09 
至于Rational,也只不过是自己装着试用的,主要是对RUP过程有些了解,其实一般公司没有Rational这种昂贵的东西也没有关系,可以用些别的工具替代,但一些关键工作是要做的,比如对需求的管理,特别是需求变更的追踪。

正规设计,我也说不好什么叫正规,其实都是一种解决问题的方案,只是前人实践下来效果感觉还不错,才被广泛采用的方法吧。

>>而且刚毕业就能有机会正规的分析设计,也很难得啊
其实没有人阻止你去进行比较规范的分析设计啊,唯一限制的是我们自己的认识水平,所以不断的学习才能不断突破自己。 
 

TI CC2640R2f蓝牙BLE开发笔记(一)入门和第一个工程 目录前言:一、我作为一个初学者关于蓝牙初学者的话二、蓝牙简介:2.1、我和别人不一样2.2、你要学习的蓝牙种类2.3、蓝牙是做什么:2.4、蓝牙BLE对比其他通讯方式:2.5、蓝牙通讯自己的特点:二、直接上手,一步一步照着做,先看看蓝牙是啥:2.1、安装2.2、编译和下载2.3、安装手机端的ble调试助手2.4、实验: 本系列文章由江山(csdn名:补不补布)(github:jianggogog... 阅读详情

相关推荐

八路抢答器____一个作品的制作思路

学习了解到一个产品制作完全由一个人去采购,设计,仿真,画PCB。不光是需求的分析还有实现功能时如何搭建电路,和给出一个简单高效的设计方法也是至关重要的。

weixin_73690807的博客 1524

我做第一个项目的经历

         可以说我在IT业还是一个菜鸟,在我现在做第一个项目的时候,都觉得蛮多东西是很新的!就连一些Java最基本的API都不晓得怎么处理,因此开发起来特慢。以前在学校的时候觉得一些java排序的问题没什么多大的用处。现在在我进行第一个项目开发的时候,我觉得处理一些逻辑的方法的时候就有点麻烦。还有以前在学校,学J2SE的时候,自己能写一个记事本程序出来以为自己很牛,现在我的第一个项目的开发

lixin1984的专栏 907

STM32 热敏电阻测量温度

1、硬件 STM32F103C8T6、热敏电阻传感器、OLED。 2、热敏电阻传感器的介绍

weixin_54721788的博客 1万+

我的第一个项目总结

第一个项目总结SpringBoot@RestControllerSpringBoot整合MyBatisNetty入门SpringBoot之CommandLineRunner接口接触的新事物项目经验总结 SpringBoot 记录下工作中的第一个springboot项目中遇到的一些问题和解决办法,以及总结下从中获得的东西。 @RestController @RestController是@Contr...

weixin_39647356的博客 370

Material Studio中分子动力学模拟得到密度density和溶解度参数

使用sketh工具画出全原子分子,以异辛烷为例子。

handsome213的博客 7321

【2026年华为暑期实习(非AI方向(通软&嵌软&测试&算法&数据科学))-4月8日-第一题- 包裹的编码】(题目+思路+Java&C++&Python解析+在线测试)

摘要:该问题要求将给定的十进制整数N转换为混合进制编码字符串,并处理回文检测。首先根据N的符号位确定编码首位(0或1),然后按输入的进制序列依次对N的绝对值进行取余和整除操作,得到编码数组。将数组元素转换为字母后生成字符串,若字符串为回文则添加"(palindrome)"后缀;否则输出最长回文子串(字典序最小)。算法采用中心扩展法检测回文,时间复杂度为O(L²),空间复杂度为O(L),其中L为字符串长度。

m0_73659489的博客 130

[非常经典]一个老工程师的话

[非常经典]一个老工程师的话 诸位,咱当电子工程师也是十余年了,不算有出息,环顾四周,也没有看见几个有出息的!回顾工程师生涯,感慨万千,愿意讲几句掏心窝子的话,也算给咱们师弟师妹们提个醒,希望他们比咱们强! [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入...

103

【全局路径规划模块全覆盖算法】(三)代码实现:Boustrophedon Cellular Decomposition Path Planning用珊格地图生成每个cell的覆盖路径

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Boustrophedon Cellular Decomposition Path Planning用珊格地图生成每个cell的覆盖路径做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1833

java程序第一个例子-helloworld

学习任何一门语言,写的第一个程序一般都是helloworld,这让我想起一个笑话:一个软件开发工程师,退休了,想练练书法,准备好了笔墨纸,拿起笔,想了半天,最后在纸上写了个大大的HelloWorld。 第一个例子也免不了这个俗,先写上一个HelloWorld程序。 public class HelloWorld { public static void main(S...

dcloud2008的博客 130

Linux内核编程(十三)Input输入子系统

Input 子系统是 Linux 内核中专门为输入设备设计的一个子系统,它提供了一个通用的框架来管理各种输入设备,如键盘、鼠标、触摸屏、游戏手柄等。这个子系统的主要目的是简化和规范化输入设备驱动的开发,同时提高驱动的通用性和兼容性。(1)输入设备:如键盘、鼠标、触摸屏、游戏手柄等,它们是用户与计算机进行交互的主要方式。(2)输入设备驱动的复杂性:传统上,为每种输入设备编写驱动都需要创建文件、进行硬件初始化、实现文件操作函数集和处理中断等。每种设备的驱动可能都有许多重复性的工作。

qq_1033275663的博客 2866

基于LSTM的股票价格预测系统,Django框架,Web的股票预测系统,训练+数据集+源码(无需安装环境版)

股票价格预测是投资领域的一个重点关注课题。由于股票价格受到诸多非线性因素的影响,得到精确的预测结果较为困难。使用 PyCharm 作为代码开发工具,通过下载好的股票金融数据,进行数据预处理,构建 LSTM 网络模型,训练模型并训练出最优模型,输出股票未来收盘价波动的走势,最后在训练好的模型上,设计股票模型应用系统,运行效率较高,对股票预测具有一定的积极意义。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 956

《不可不知的嵌入式工程师经验》(经典转载)-

本文将从技术和就业经验等角度为即将进入嵌入式开发的工程师们,详细讲述了嵌入式的概念,嵌入式开发之间的异同以及应该如何做出选择。以下都是前辈的一些经验之谈,希望对大家有所帮助。 第一.工程师眼中的“嵌入式系统” 在工程师看来:着重理解“嵌入”的概念,主要从三个方面上来理解。 1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器和累

ASB->EMBEDDED->ZIGBEE->RFID->FPGA->SYSTEM 1411

硬件工程师笔记——运算放大电路Multisim电路仿真实验汇总

本文系统介绍了运算放大电路的基础知识及其应用。主要内容包括:1)运算放大器的基本结构、理想特性及分析方法(虚短、虚断、叠加定理);2)比例运算电路(同向、反向、差分)的工作原理与仿真分析;3)求和运算、加减运算电路的实现方法;4)积分、微分、指数和对数运算电路的基本原理;5)过零电压比较器的功能特点。通过理论分析和仿真实验,详细阐述了各类运算放大电路的输入输出特性、相位关系和增益计算,为硬件工程师提供了实用的电路设计参考。

XU157303764的博客 2486

新手入门一篇就够:从零开发移动端IM(转载)

来源 http://www.52im.net/thread-464-1-1.html一、前言IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和交流门槛,对各种应用形态产生了深远影响。做为IM开发者或即将成为IM开发者的技术人员,IM的价值和重要性不言自明。但从技术实现来说,IM系统的开发(尤其是移动端IM)还是存在许多技术难点和坑点的。也正因如...

周镇怀的博客 5545

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

JAVA2十大经典图书(转载)

开发文档,这也可以理解)--这只是一家之见而已--欢迎大家点评。   第一名:Java编程思想第二版(Thinking in java second)-包含范围:全部。   没说的--绝对的大师作品--当之无愧的第一--第一版时就享誉整个java界(当时网上好象也有人译了)--国内版是京京工作室翻译的-基本上毁了此书--错误术语太多-推荐高手看E文版,新手就不要先看此书了。第二版更精采--台湾

tmj2014的专栏 564

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

全战三国战斗结束卡住_《全面战争:三国》新手指南!全系统解析+上手攻略(上)...

本文由二柄特约作者:转身反杀撰写, 转载请注明出处。Steam平台《全面战争:三国》已于今日下午15时正式解锁,大家现在已经可以进入游戏了!游戏目前在国区售价为268元,预购或首周购买的玩家可获得“黄巾之乱”DLC。我们也已经在社区板块开启了《全面战争:三国》的专区。本作吸引了大量首次入坑《全面战争》系列的玩家,为此我们为大家准备了一份完整的新手上手指南,从游戏的各界面,UI解释,到游戏内运营以及...

weixin_39550410的博客 3570

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

学习c++有什么经典书籍[转载]

在网上找了一些推荐c++书籍的文章,个人觉得这个不错,希望对大家有帮助。讲一下我的经验。首先,关于入门书方面,我觉得到现在我都没有看到一部适合初学者的C++ 入门书。经典的书都是高手们写的,但根本不适合初学者看。这大概是 C++ 族群增长的一大瓶颈。我个人觉得最适合入门的一本书是「从 C 到 C++ 物件导向革命」,当然光看书名大家就猜到这是台湾的书了。它是 1990 年的书,作者陈建维先

xiaofeiqiu的专栏 882

【转载】新手从零开始学软件测试

作者:威哥  来源:51testing网        本文面向软件测试新手,从测试前的准备工作、测试需求收集、测试用例设计、测试用例执行、测试结果分析几个方面给出建议和方法。鉴于国内的软件开发、测试不规范的现状,本文为软件测试新手提供了若干个软件测试的关注点。         引言    几年前,从学校毕业后,第一份工作就是软件测试。那时候,国内的软件企业大多对软件测试还没有什么概念,书店里

兰子聊测试 1153

Web前端新手经典学习路线

  做前端开发八九年的时间,到2015年的时候,Web前端因为HTML5技术的高速发展,成为IT行业中最受欢迎和未来需求人才发展最好的职业,各个行业都想转行做前端开发,包括一些在校的学生,土木工程,一些不相关的其他行业都想转行做前端开发,拿高薪。就目前拉勾网和智联招聘正常的平均工资,在北上广深杭这五个大城市的平均工资可以达到15000左右,这个确实是一个非常诱人的待遇,而且根据每年...

axgrfetia063590468的博客 205

[经典文章(转载)]一个美国老工程师的心理话: 给年轻工程师的十大忠告

一个美国老工程师的心理话: 给年轻工程师的十大忠告发表于 2005-8-7 6:16:54 [1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体

::古埃及象形文字:: 1129

转载:49个python经典电子书

【转载:49个python经典电子书】 http://blog.sina.com.cn/s/blog_653f5cb20101fz8h.html Python语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特

panrenlong的博客 6631

【转载】要成为一名嵌入式工程师需要具备哪些技能

要成为一名嵌入式工程师需要具备的技能。这个就是嵌入式,一个外人看来神奇,内人看来痛苦,不过如果你看到驱动两个LED闪动的时候,会有种莫名其妙的兴奋的话,那欢迎你,咱们是同类。

Milky Way Galaxy 827

【转载】CMake的作用和理解

【转载】CMake的作用和理解 原文链接:https://blog.youkuaiyun.com/Torres_10/article/details/80371425

qq_36248632的博客 2993

RV1126B端侧AI视觉实战:RTSP推流与高清相机方案解析

嵌入式视觉系统开发常涉及图像采集、编码传输与AI推理的协同设计。其中,ISP决定画质基础,NPU提供端侧智能算力,而RTSP协议则是视频流接入平台的关键桥梁。基于RV1126B芯片,其集成的ISP可支持多类型sensor输入与HDR模式,配合H.264/H.265硬件编码,能构建低功耗的高清视频推流链路;同时2TOPs级NPU可并行运行轻量级检测模型,适用于IPC模组、边缘计算盒、低功耗巡检设备等场景。文章从实际工程角度剖析了从sensor选型、RTSP服务搭建、画质调校到RKNN模型部署的完整技术要点,并

weixin_33836874的博客 432

Java2十大经典中文图书

[size=medium][color=blue]Java2十大经典中文图书 Java2十大经典中文图书 (转载)   第一名:Java编程思想第二版(Thinking in java second)-包含范围:全部。 没说的--绝对的大师作品--当之无愧的第一--第一版时就享誉整个java界(当时网上好象也有人译了)--国内版是京京工作室翻译的-基本上毁了此书-...

正走向大牛的菜鸟 157
上一篇: [转载]: 中专学历的我和女朋友在深圳2年的奋斗史(ZT)
下一篇: Jive论坛与Spring框架,经典代码和架构!
fasttalk
博客等级 码龄24年 95粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值