我决定辞掉工作,全职开发我的操作系统!(续)

宁静操作系统:lady_beetle:-C/C++开发 用于x86计算机的SerenityOS图形Unix操作系统。 关于SerenityOS,是使用自定义类Unix内核致90年代用户界面的一封情书。 它从SerenityOS图形Unix操作系统(适用于x86计算机)窃取了精美的构想,以此来真诚地恭维。 关于SerenityOS,是使用自定义类Unix内核致90年代用户界面的一封情书。 它通过从其他各种系统中窃取漂亮的想法而真诚地奉承。 粗略地讲,目标是将1990年代后期的生产力软件的美感与2000年代后期* nix的高级用户的可访问性结合起来。 对我们来说,这是我们根据自己喜欢的事物而建立的系统。 我(安德里亚斯)定期发布原始骇客sessio 立即下载

去年给大家讲了一个瑞典程序员的故事, 他在短短半年的业余时间内、一个人单枪匹马构建了普通程序员几年、甚至十几年的业余时间才能搞定的东西:

操作系统内核、TCP/IP协议、GUI框架、进程管理器、文件浏览器、文本编辑器、界面编辑器、贪吃蛇游戏、绘图工具...... 

这家伙就是传说中的10倍速,甚至100倍速程序员。

再加上后续的浏览器, JS引擎、CSS、C++ IDE、HTTP服务器、电子表格...... 虽然功能还不完善,但是项目展示出的范围宽广得可怕!  

这不但要重写操作系统,还要重写上面的所有软件! 

d3ac656c79af5119991630a743d0154e.png

这个叫宁静OS的操作系统已经到了第4个年头,今年清明假期我又关注了一下,发现进展不错,他的GitHub已经有了2K的fork,和18.8k的star。

并且,项目已经有了三个靠接受赞助开发宁静OS的程序员,有趣的是,其中有个人叫Linus866737ea6b24f264cb306adbb80a252f.png ,还有数百个贡献者,一个活跃、成熟的社区已经成型。

最近的里程碑是,宁静OS上的浏览器通过了Acid3的测试。Acid3虽然比较老,但是对JavaScript,DOM的要求是很高的。

我把之前的文章也做了更新,再次强烈推荐大家关注下这个仅凭兴趣发展起来的操作系统:  https://github.com/SerenityOS/serenity

下面以第一人称,讲述一下他的故事。

2018年10月,我刚刚在瑞典的一家戒毒所完成了为期3个月的康复计划, 我失业了,和家人在一起,无事可做。 

日子太漫长了,我得找点儿事儿做。

之前我在Apple 和诺基亚工作,主要做基于WebKit的Web浏览器,  但是我对底层的东西特别感兴趣,我写过ELF的解析器,Ext2 文件系统浏览器,有着事件循环的GUI 框架......

慢慢地,一个操作系统居然开始成形了,我把它取名为SerenityOS (宁静操作系统)。 

你可能要问了,为什么要搞个新的操作系统呢? 

答案很简单,我想构建一个我日常使用的梦想的操作系统:结合上世纪90年代的GUI和Unix严肃的命令行。

在Apple工作的时候,我很享受苹果软件那种都在一个“屋檐”下的感觉,不但所有的软件可以超级紧密地集成,并且可以让程序员尽情地去“折腾”。 

我决定把这种感觉带给开源世界:我的SerenityOS不再是由一个个软件包“拼凑”起来的,我要重新构建所有的东西:从内核到浏览器,以及中间层的所有东西!

开工吧!

第一年, 从零到HTML!

2018-11-08: 在虚拟机中运行

b2cf98eb8f784bbee4e3298dc7f6102b.png

2019-1-09 ,开始对Widget(窗口,按钮,CheckBox等)开始测试

083d10718559c1084639842bb3c38f80.png

2019-01-21:  创建多个"guitest"进程

003f8a305881432a13d64540b8817072.png

2019-02-03:   增加字体编辑器、时钟

64d0585c302b45db32f14507f1189559.png

2019-02-11:  实现菜单!早期的文件管理器

3624f7009af2aaaa2c4e4037b4f8fb7d.png

2019-02-28: 早期的进程管理器

8712b136f48ea2514fc59d2840ee76de.png

2019-03-15:  TCP协议栈搞定了,实现一个IRC玩玩

60ad022a56ad7ee1452775c54fdb62b1.png

2019-04-11: 创建VisualBuilder,  创意来源于Visual Basic

326e24e918b84a0c7e300fc9f422f674.png

2019-04-20:  贪吃蛇游戏

64238582400683dee33d1373a2747011.png

2019-04-22: GCC基本上可以工作了

628d69aa56ef8f046e1b44c9aecd67e8.png

2019-06-14:  简单的绘图程序

997a88e8927c7bfe03daa9ed865e7eaf.png

2019-09-09: 女士们先生们,我们有 DOOM了!

4bcc42956012736f708d2ed8ce82d3c0.png

2019-09-29: 在LibHTML中实现基本的CSS

a1ed0e72af802486cf2aaad12418abd8.png

2019-10-10  第一个浏览器实现了!

dfa833260af95d36fad4a1ce6bf6cdd6.png

第二年

2019-11-04: 移植Quake

08c41ef4b40a7ef57afa7c73ed579f20.png

2019-11-30:  整一个 C++ IDE吧:  HackStudio IDE

57e02a71ecf55db2a45084865fc1febb.png

2019-12-30: SerenityOS 在 36c3 上被“黑”,我开始发疯似地学习安全知识来保护它

15836a99b875b60b99e72e8899af7d88.png

2020-02-29:  一个简单的HTTP服务器(为了庆祝我的生日)

ba2537812d3ae04d7618b5de0a9aa99b.png

2020-03-31: JavaScript 支持初见雏形

c0503f7ee518d4ae8282745060513064.png

2020-05-30: 支持TLS(和HTTPS)

5bc329f8c3e8e9bddc53643f4326a785.png

2020-06-22: JPEG解码器

2362a3340056faacd323d61913b3ef86.png

(想知道图片中这位美女是谁的,可以参考这篇文章《计算机女神,互联网第一夫人!》)

2020-06-30: 努力通过Web浏览器的CSS兼容性测试(ACID2)

fc29d95d54f13d713c830c37ad5d5208.png

2020-08-30: 更多的桌面游戏 (Chess and 2048)

db790da871a42bd5e885627f395248f7.png

2020-09-22: C++ IDE HackStudio 开始支持Git

bdcae0483b682b04851577dbc8f28420.png

2020-09-29:  简单版Excel !

c739881d04e62e279d9bd0cf7be32a79.png

第三年

从这一年开始,采访明显增多

2021-03-6:  移植经典游戏:暗黑破坏神

921eea71d64c200cb4fd6aaca877bc5a.png

2021-05-28:  重大里程碑,收到了足够的捐款,可以真正在宁静OS上全职工作!

2021-6-30:  支持64位

0c65fba41ac2c78858cb59428911a4a8.png

2021-6-30:  构建“设置”应用程序

b863ad3cb3ce041f95e54e82a0c571a3.png

2021-8-10:致力于多核稳定性

b374d4ba9014e9ea743c19d4f51e4201.png

随着时间的推移,越来越多的人发现了我这个小项目(和我在GitHub上的视频),也引起了不少人的共鸣,比如:

我很喜欢你这个项目,有着Unix风格的内核,混搭的GUI,一个Mac OS的菜单栏, Windows GUI界面,一个NextSTEP风格的Laucher , 你把其他系统中你最喜欢的部分给拿了过来。 

越来越多的人参与进来, 宁静操作系统,已经从一个不起眼的小项目,发展成为一个活跃的开源社区,全世界有几百个贡献者,在GitHub上收获了11.9K的star 和 1.1k 的fork 。 

2021年5月28号,我辞职了,全心全意地投入到这个操作系统的开发中。 

这主要得益于大家慷慨的支持,我现在每月收到来自Patreon, GitHub 和PayPal的2000美元的捐赠,YouTube也有少量收入(每月150美元),再加上宁静OS的商品销售(每月100美元)。 

这虽然不足以完全维持我和我的家庭的开销,但也差不到哪儿去。 

正如你看到的,我并不想通过这个操作系统发财, 我只想成为一个健康的、神智健全的人, 碰巧我的“自我治疗”项目吸引了这么多人的注意和支持。 

我是Andreas Kling, 一个瑞典程序员。

63b0d3099eda6723857649f2999f7912.png


故事看完了,不知道各位小伙伴有什么感受? 

说实话,我看了以后首先的感觉就是特别震惊!

文章开头已经提过,这家伙在短短的半年时间内、一个人单枪匹马构建了普通程序员几年、甚至十几年的业余时间才能搞定的东西, 这家伙就是传说中的10倍速,甚至100倍速程序员。

其次,Andreas真是敢想敢干,从内核到应用,都要重新搞一遍。Linux发展这么多年,大家都觉得一统天下了,都去研究Linux就好了,有个别爱好者也就是写个玩具操作系统,但是Andreas却有自己独特的想法,走出了一条独特的道路,并且培育了一个良好的开源社区。

第三就是兴趣真是最好的老师,他完全是凭借个人兴趣把这个系统开发出来的, 在起步阶段,所有的代码都是一个人写的。 一般人写操作系统,估计也就开个头,能够启动,抄几个例子也就算了,更不会搞这么多复杂的GUI框架和程序了。

他在油管上发了700多个视频!让人叹为观止,把自己的开发过程,对操作系统的理解都讲了出来。 

9ad82af4ad1086dff3f1f6409bf74b26.png

不过, 这几年他衰老速度也肉眼可见

fab9e097a1e7758b99a38ed89cc51698.png

第四,为什么又是北欧? 

Linux是芬兰人Linus写的

MySQL是瑞典人Monty开发的。

Minecraft 是瑞典人Markus写的

......

SerenityOS 虽然没法和上述产品相比,但也是一个非常有影响力的项目了 。 

为什么这些产品没有出现在中国? 

如果说Linux, MySQL, Minecraft开发的比较早,那时候中国程序员还不多,水平可能还不高, 但是现在已经是21世纪20年代,SerenityOS涉及到的技术早已普及,为什么没人去做呢? 

我想最有可能的原因是:中国有很多像Andreas这样的天才程序员,只不过他整天被需求压得喘不过气来,业余时间被996榨干,回到家中,累得根本没有时间和精力去鼓捣自己的兴趣和爱好了......

最后一个问题:如果有个机会,你每月也可以收到一笔赞助,可以维持不错的生活,只能租房子,但是不用担心医疗,你会去做类似的事情吗?

3af3b1d4627f22270da379ea15106599.gif

码农翻身3年精华文章(必读!)

漫画 | 老婆离家三周,我写了一个操作系统!

漫画 | Linux之父:我财务自由以后,失眠了

漫画:打死我也不搞负载均衡了!

漫画:兄弟,今晚又得熬个通宵了!

程序员的宿命

宇宙第一IDE到底是谁?

如何降低程序员的工资?

程序员,你得选准跑路的时间!

Javascript: 一个屌丝的逆袭

我是一个线程

TCP/IP之大明邮差

一个故事讲完Https

CPU 阿甘

aece8aa4259e15ba0ebde0b421e3d700.png

宁静:宁静操作系统System 宁静操作系统 用于x86计算机的图形化类Unix操作系统。 关于 SerenityOS是使用自定义类Unix内核致90年代用户界面的一封情书。 它通过从其他各种系统中窃取精美的想法而真诚地奉承。 粗略地讲,目标是将1990年代后期生产力软件的美学与2000年代后期* nix的高级用户可访问性结合起来。 对我们来说,这是我们根据自己喜欢的事物而建立的系统。 我(Andreas)定期在上发布原始黑客会话和演示。 有时我在上写有关该系统的。 如果您想以这种方式显示一些支持,我也会在和。 屏幕截图 内核功能 具有抢先式多线程功能的x86(32位)内核 硬件保护(SMEP,SMAP,UMIP,N 立即下载

相关推荐

宁静「Serenity」-crx插件

将新标签替换为简体中文主页,其中包含英文中最美的单词。 您是否厌倦了Chrome中相同的旧无聊的默认新标签页? 嘿,我也是! 这就是为什么我创建此扩展程序的原因,以刷新默认页面并添加一些优美的风景和文字。 “但是访问我访问量最大的网站的链接又如何呢? 我不能没有那个! 不用担心! 我被你遮住了,伙计。 在页面的左上角有一个眼睛图标,如果单击它,将显示访问量最大的网站的列表,以便您可以快速访问自己喜欢的网站。 太漂亮了吧? 如果您宁愿在新标签上显示励志名言,我也会为您提供帮助。 Quotes New Tab是我的第一个新标签扩展,其中包含名人的励志名言。 请点击以下链接查看! https://chrome.google.com/webstore/detail/quotes-new-tab/fnhpicigolcacikdjdocmkfnplmefadg?hl=sv 支持语言:English

“戒毒的程序员,全职开发操作系统 6 年后,决定辞职再转战浏览器!”

架构师大咖 架构师大咖,打造有价值的架构师交流平台。分享架构师干货、教程、课程、资讯。架构师大咖,每日推送。公众号该公众号已被封禁这位名为AndreasKling 的程序员,自 2019 年每次更新自己的最新动态时,似乎都能登上国外科技网站的热榜,成为众人关注的焦点。不是因为他堪比 Linux 之父 Linux ...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 162

SAP销售订单POD实操:从VL01N创建到VLPOD差异处理,保姆级避坑指南

本文详细解析SAP销售订单POD全流程,从VL01N创建到VLPOD差异处理,提供保姆级避坑指南。涵盖核心业务逻辑、前置配置、销售订单创建、交货单处理及差异解决方案,帮助用户高效管理供应链执行环节,确保财务与物流的准确对接。

weixin_27219587的博客 626

SerenityOS 操作系统类 Unix 操作系统

是一个类似Unix的操作系统,但是带有图形化界面,适合X86台式计算机,,其界面类似90 年代的Win98/NT。几乎由一个人完成额操作系统。这几天其Web浏览器通过了 Acid3 浏览器。

ejinxian的专栏 1173

保姆级教程:用Qlib和LightGBM从零搭建你的第一个AI量化选股策略(附完整代码)

本文提供了一份详细的教程,教你如何使用Qlib和LightGBM从零搭建AI量化选股策略。教程涵盖了环境配置、数据获取、特征工程、模型训练和策略回测等关键步骤,并附有完整代码和常见问题解决方案,适合量化投资初学者快速上手。

weixin_29191081的博客 446

采用超级电容设计的UPS不间断电源,用于掉电数据保存,可续航10-60秒

关键词:树莓派 CM4 UPS 不间断电源 掉电保存 超级电容 SuperCap 充电 升压 续航 10F 法拉电容 Mcuzone 野芯科技 概述:我们经常会遇到系统意外掉电的情况,对于一些可靠性要求很高的工业现场设备或者运行过程中有重要数据需要保存的平台就需要UPS电源了。常规的UPS采用后备锂电池设计,具备无缝切换、续航时间长、稳定可靠等特点,但同时也有价格过高、体积过大的缺点。对于不少仅需在检测到系统掉电后对数据进行保存即可的应用而言,这些标准的UPS电源就不太合适,为此我...

6606

有可能一个人写出windows操作系统吗?

????????关注后回复“进群”,拉你进程序员交流群????????作者丨码农的荒岛求生来源丨码农的荒岛求生(ID:escape-it)大家好,我是小风哥。最近查资料时看到有人提出了一个很有趣的问题:对于世界上最牛的程序员来说有可能自己手撸windows操作系统吗?这个问题的评论也很有趣,是这样评论的:这个问题就是想在问“我是世界上最厉害的桥梁建造师,有可能自己建造出这货吗”:答案是显而易见的,即使是世界上最牛的程...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 384

05、基于ALV表报实现复选框、全选、取消全选等功能

基于Function ALV实现复选框、全选及取消全选等功能

wo520yl1314的博客 2372

一个人写的操作系统 - Sparrow OS

原文: 一个人写的操作系统 - Sparrow OS 链接:http://blog.youkuaiyun.com/michael2012zhao/article/details/17421383 分类: Sparrow操作系统 2013-12-19 19:25 1734人阅读 评论(16) 收藏 举报 操作系统sparrow 目录(?)[+] 一个

xww810319的专栏 2594

基于fme和python-docx第三方库批量更新不动产调查表

最近应朋友需要批量更新在不动产成果中提交的各种word报表中的指定数据,根据初步的了解,我做了一个基于fme软件和python-docx第三方库进行一个批量的更新方案。

weixin_43229258的博客 1241

【如何学习CAN总线测试】——Python+Robot Framework框架实现UDS诊断自动化

由于项目需要进行UDS诊断测试,所以对这方面进行了研究学习,网上很少能查询到相关资料,故记录一下UDS自动化测试开发过程,由于保密原则,案例都是Demo,希望能帮到感兴趣的朋友。

测试领域技术分享 7472

我决定辞掉工作,全职开发我的操作系统!

今天读到了一个瑞典程序员的故事, 他在短短半年的业余时间内、一个人单枪匹马构建了普通程序员几年、甚至十几年的业余时间才能搞定的东西:操作系统内核、TCP/IP协议、GUI框架、进程管理器、...

码农翻身 1120

AES加密算法及AES-CMAC原理白话版系统解析

对AES不同加密算法,加密模式,加密原理,填充算法及AES-CMAC算法的详细系统介绍,帮助大家对AES进行系统掌握。

initiallizer的博客 4074

这个地方的程序员太闲了,写了3个世界流行的操作系统!

世界上有个地方,这里的程序员似乎特别闲,特别喜欢开发操作系统。这个地方就是北欧。1991年,芬兰的程序员Linus Torvalds开发了Linux,现在已经统治世界。2018年,瑞典程序员Andreas Kling为了戒除毒瘾,完全从头儿开始,开发操作系统。在短短的半年时间内,单枪匹马构建了普通程序员几年,甚至十几年才能搞定的东西:操作系统内核、TCP/IP协议、GUI框架、进程管理器、文件浏览...

码农翻身 1233

Open3D KD-tree的使用【2025最新版】

Open3d使用FLANN构建KDTree以便进行快速最近邻检索。博客长期更新,本文最近一次更新时间为:2025年1月1日,代码已同步更新至Open3D 0.18.0版本。

点云侠的博客 40万+

数学建模模型总结

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

iOS 10:新操作系统,新手!

iOS10。快到了。 你准备好了吗? 我们猜测您还没有准备好,但是您知道自己需要做。 您必须了解最新的操作系统,以保持最佳客户并获得新客户,但是要跟踪更改可能很困难。 好吧,这很难。 这可能会使它更容易一些: Udemy最受欢迎的两位讲师Mark Price和Rob Percival回来了必修课,这些课程涵盖了您需要了解的有关iOS 10的所有知识,它将如何影响您以及可以集成到应...

danpu0978的博客 224

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

文件操作ios::in_iOS 10:新操作系统,新手!

文件操作ios::in iOS10。快到了。 你准备好了吗? 我们猜测您还没有准备好,但是您知道您需要做好准备。 您必须保持最新的操作系统以保持最佳客户并获得新客户,但是要跟踪更改可能很困难。 好吧,这很难。 这可能会使它更容易一些: Udemy最受欢迎的两位讲师Mark Price和Rob Percival回来了必修课,这些课程涵盖了您需要了解的有关iOS 10的所有知识,它将如...

danpu0978的博客 314

老版QQ原生表情gif动态

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

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

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

假如王撕葱是程序员。。。

宝,今天我要给你写封信,写的什么信,是我爱你爱的难以置信。你可能不了解我,我介绍下自己。我是程序员,具体什么员,是我想成为你家庭的一员。工作就是编程,编的什么程,是见你一面的日夜兼程。用的...

码农翻身 501

《安富莱嵌入式周报》第325期:开源可编程精密电阻仪,开源入耳式无线耳机,蓝牙Mesh固件更新,锂电池管理板, 无人机螺旋桨参考, QT6.6发布,IAR教育版

《安富莱嵌入式周报》第325期:开源可编程精密电阻仪,开源入耳式无线耳机,蓝牙Mesh固件更新,锂电池管理板, 无人机螺旋桨参考, QT6.6发布,IAR教育版

Simon223的博客 869

假如我是超级内卷王......

我最喜欢我的发型,因为它天生自然卷,而且是内卷。公司在十八层,为了能坐上电梯,我每次走到三层去等往下的电梯,先坐到1楼再上去。为了能带薪拉屎,我每次提前半个小时占坑,一边等shi意一边刷抖...

码农翻身 562

WASM·技术趋势

今天看到一则故事,一名程序员@Andreas Kling 辞掉工作,全职开发操作系统。正如其签名档一样:I like computers!对技术的热爱已经超越了工作本身,完全是兴趣所在sh...

shadowcz007的博客 993

《跟阿铭学Linux》作者李世明:谈不上告白,就是帮女友转型而已

本文仅用于学习和交流目的,不得用于商业目的。非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/art... 访谈嘉宾: 阿铭,本名李世明,阿铭Linux培训创办者,猿课联合创始人,从事互联网运维工作8年多,先后就职于Discuz、腾讯、好贷,从最基础的运维到高级运维工程师,再到运维部...

weixin_33751566的博客 256

(1)入门:开班

                                                                                   前端学习路上的逆耳忠言 前中期发育 系统任务:打牢基础、构建知识体系、训练编程思维 直播(周一和周三晚上):知识点深入、扩展视野、答疑 中后期打架 做项目:掌握框架的使用、前端知识再次深挖 写简历、面试:把真实面试当作锻炼的...

wolverine54的博客 301

自己动手写操作系统 ----总计

2021.1.23 开始写操作系统,参考书《ORANGE’S:一个操作系统的实现》 好奇心是动力的源泉,追究问题的本质是优秀黑客的必备素质,只有充分掌握了系统原理,才能在技术上游刃有余,才能有真正的创新和发展。中国需要更多真正的黑客,也希望更多的程序员能享受属于黑客的创造乐趣。 实践–遇到问题–解决问题–再实践 NASM 2.12.02稳定版下载 2017年,软盘已经退出历史舞台。 而且rawrite软件已经不能在win10.0.14393这样的64系统上运行了。 经过考量,作者决定选用WinHex18

qq_43840665的博客 7280
上一篇: 说两个我深藏多年的秘密!
下一篇: 作为一本书,我是如何把别的Java系列卷死的!
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值