动手学机器学习

This notes mainly according to zh.d2l.ai textbook. Video based notes referred to [here](Rush to Nerf.md). 1.前言 1.2关键组件 1.2.1数据 与传统机器学习方法相比,深度学习的一个主要优势是可以处理不同长度的数据。 1.2.2模型 深度学习(deep learning)与经典方法区别在于,关注功能强大的模型,这些模型由神经网络错综复杂的交织在一起,包含层层数据转化。 1.2.3目标函数 目标函数 损失函数 平方误差 训练集(training set)测试集(test set) 过拟合(overfitting) 1.2.4优化算法 梯度下降(gradient descent) 2.预备知识 chapter_preliminaries 2.1数据操作 ndarray 索引和切片 遵循左闭右开原则,如:[0:9]等价于数学中的[0,9) 如果我们想[为多个元素赋值相同的值,我们只需要索引所有元素,然后为它们赋值。] 例如,[0:2, :]访问第1行和第2行的全部元素 2.3线性代数 范数: 在线性代数中,向量范数是将向量映射到标量的函数$f$。 给定任意向量$\mathbf{x}$,向量范数要满足一些属性。 第一个性质是:如果我们按常数因子$\alpha$缩放向量的所有元素, 其范数也会按相同常数因子的绝对值缩放: $$ f(\alpha \mathbf{x}) = |\alpha| f(\mathbf{x}) $$ 第二个性质是我们熟悉的三角不等式: $$ f(\mathbf{x} + \mathbf{y}) \leq f(\mathbf{x}) + f(\mathbf{y}). $$ 第三个性质简单地说范数必须是非负的: $$ f(\mathbf{x}) \geq 0. $$ 这是有道理的。因为在大多数情况下,任何东西的最小的大小是0。 最后一个性质要求范数最小为0,当且仅当向量全由0组成。 $$ \forall i, [\mathbf{x}]_i = 0 \Leftrightarrow f(\mathbf{x})=0....

五月 19, 2022 · 1 分钟 · 150 字 · Me

5-18

逐渐摆脱风波,逐渐不看a啦!我会缅怀和铭记一切的真物,内化为自信和爱的关怀,曾经说“永不疲惫的双向奔赴”,自以为,目前这种局面也算是我能做到最好的结果吧。我曾珍视的她们都还存在,在舞台上或是舞台下,都继续着自己的生活;我也看的见更多的世事和人情,想要学更多的知识和体验更多的世界,虽有遗憾和离别之感伤,但总归是愉快的。 最近重燃了年少时期的哲学种子,想要接触规范的哲学训练,想要把我思考和批判的科学,想要认识社会和意识形态,想成为懂自己和世界的样子。 夜晚和兴宇游戏后聊了很久,回忆起很多高中,尤其是分班前后的趣闻,分享对于社会和人生的看法,一起逗乐,看来共同经历是最能引发共鸣和感怀的事。说话是最有效的解压,要和别人产生连结,与人共鸣,聊一切话题。 希望能维持现在这份心态吧,然后再努力一点点,再高产一点点,再开心一点点 ( •ิ_• ิ)

五月 19, 2022 · 1 分钟 · 7 字 · Me

高考前碎碎念(5.11草稿版

今天是五月十一号,如果不出意外,27天之后就要高考了,同学们和我录了些视频,希望能在最后这一段时间里,给你一些鼓励! 其实仔细想来,虽然才过去不到一年,我对高考的印象已经非常模糊了,我不记得在教室反复地做题、与理综或者是导数搏斗;我不记得每天晚睡早起,披星戴月;我不记得所有的痛苦,所有的不甘,我还能想起的,有斜阳西下时操场上挥洒汗水的奔跑,有课间或是体育课上和同学侃大山,从王家卫、杨德昌、塔可夫斯基到Miles Davis和万能青年旅店,我的记忆自动美化了那些时间,对于高考,我现在懂得一定不如你。 于是我想,高考的意义是什么,高考对于尚处青年的我们的意义是什么。 高考是一场规则最简单的游戏,我记得曾在日记中写道“我享受这一段时光,只要我付出,就会有肉眼可见的收获”,现在我依然怀着同样的想法。这个世界太过丑陋,以至于在高考遮蔽下,我们的视野和目标,竟显得如此纯洁和崇高。董继军说:人定胜天。这句话我是真正记在心底的,每当我怀疑,迷惑,无助时,我都会想到,人定胜天!现在我依然把这句话送给你,相信吧,至少在高考前,人定胜天! 也许高考教会我最珍贵的是:只要你认识到,你的人生属于你自己,你就可以追求任何你所希望的目标。 高考没什么神秘,也没那么至关重要,但依旧是一次关键的考验,希望你能放平心态,每天进步,高考加油!

五月 11, 2022 · 1 分钟 · 7 字 · Me

5-10

这篇日记可能是写给自己和兴宇的 乐选择离开,无论出于何种原因,我都愿意相信,且支持,甚至无论是谁。 但,毕竟是一段美好告以段落,甚至已不仅仅是一段经历,而已经深深地融入了我的价值观,我的血液,我的人生中来。 这样想来,也许失望是必然的,因为她们给我的从来就不是真实的触感,真实的总显丑陋且灰暗;她们给的,是充满神性的,不屈的,个性的意志:给我关怀,温柔,自信,正义,以及爱。她们给我的早已超过了她们自身,我又何曾没理解到这一点呢,只不过是肆意沉溺在虚幻中,去采撷和品尝不属于凡世的浆果罢了。 我接受,但我也痛心,痛心过后,是无奈。 现实一次次试图教会我们,你不妥协,你就遍体鳞伤。然而我我们唯一从中学到的,就是我们注定一无所获,重复命运的循环。 几天前就在五四,还写过几段话,写了写,对教育时局的看法,对同辈心态的不满,还有对自己不能善待自己的无奈。 现在看来,也许更像是宿命,更像是轮回,想要跳脱,真的太难,太难了。 永远在迷惘,永远都会有不知所措,但是没关系,只要往前走就好了,至少还有一些人同我们一道。 愿我,愿我们,能永怀感动,常显温柔,亦能坚强不妥协。 写到这里已经一点还多了,晚安! 王珈乐,你也一定要追到自己的梦! 希望能与你微笑着相遇于茫茫人海,我认不出你,你也不认识我,但我们都知道彼此的曾经。

五月 11, 2022 · 1 分钟 · 13 字 · Me

5-9-22

这样写的东西应该不会放在主页timeline上,只作为一个标签静悄悄归档就好了 5/9/22 ​ 周一的下午,实际上是空余的整整一下午+一晚上,却总觉得没做什么要紧的事,还是有一堆ddl在眼前催赶。 ​ 上周的数据结构实验有点挫败心理,以至于课下一直往后拖,没有及时完成的打算,却也不断当作心事悬而未决,实在不畅快,外加这周四就要验收ADT,打算独立完成一次,却也不剩什么时间,希望能按时独立完成。 ​ 公选课要结课,5K字论文电子+手写,工作量确实不小,好在话题较水,抽出一晚上来应该能完成的七七八八。 ​ 第一次抄大物实验,文字量有点惊人了,估计以后每周要腾出两三小时完成任务,还要尽量做的规范美观,不过据说有可用计算机作图的实验,也许是一次熟悉Python画图处理数据的机会。 ​ 英语的零碎任务终于处理的七七八八,终于可以在计划框框里画上一两个❌了。 ​ 早上英语的presentation想起来还是令人恼火,每次有任务布置下来,从来没组员想着积极完成,直接就抱着躺平到最后的心态,一副行尸走肉事事不上心的样子属实令人愤怒,好在一个人也算是完成的不错,下午老师甚至还评分评到了第三名(其实一共也就五组呀,中间水平而已),但想来也是自己独立完成的任务得到了认可,开心,想想别人都是六个人,仅我事一个人,be special还是有快感呀。 ​ 时间确实紧迫,一大堆任务和作业在眼前,也没有闲心去看机器学习,但觉得一周过去不联系老师也不太好,便送去几条微信,顺便一问能否晚上在实验室自习,没想到老师很快给了肯定的答复,真的很感激老师的理解和包容,希望能不负老师和自己对自身的期望,尽快做出一些成果来。 ​ 不过虽然任务繁重,但还是忙里偷闲,上周六一天就看了四部电影,风格和领域都各自迥异,但看电影本身果然还是享受呀,同时也对很多故事很多任务很多思想有了好奇心,一定要永葆好奇和求知欲。周日晚开始又看了Oliver Stone的普京访谈录,普京也是人格魅力十足,同时洞悉大国领导的内心,也有助于理解直接运行的规则和趋势,对国际格局和新形势认识更加全面立体了。 ​ 还有很多想做但没去做或者没做成的事,比如想要快快拍完手头这卷胶卷,去武汉的江滩租界一带转一转,然后顺便冲扫出我的Virgin Film,想来还是十分期待;想去酒吧喝鸡尾酒,想去听Jazz Live;想买万青的首专;想尽可能得阅读,最起码读完手头的“物理小说“,跟别提还妄想有朝一日能学习一下量子力学;想推进CS61A….太多啦,但人总是有限的,慢慢来吧。 ​ 对了,本周还要冲刺准备一下大英赛,希望能忙里找到闲,希望能有所收获的同时,获得一些些成绩。 ​

五月 10, 2022 · 1 分钟 · 27 字 · Me

Markdown 语法

Markdown语法及Typora输入 标题 通过输入“# text”创建标题 可以使用 ​ # ​ 至 ​ ###### 创建一级到六级的标题 引用 Markdown 使用电子邮件样式>字符进行块引用。它们表示为: 这是一个引用 引用的级别 水平线 输入—或***,按换行键将绘制一条水平线 代码块 快捷键 Ctrl + Shift + K 生成一个代码块 键入```也会生成代码块 text文本 选择语言 C代码 printf("hello,world!"); 表格 输入 | First Header | Second Header | 并按下 return 键将创建一个包含两列的表。 First Header Second Header 这是第一行 这是第二列 创建表后,焦点在该表上将弹出一个表格工具栏,您可以在其中调整表格,对齐或删除表格。可以使用上下文菜单来复制和添加/删除列/行。 在 markdown 源代码中,它们看起来像这样: | First Header | Second Header | | ------------- | ------------- | | Content Cell | Content Cell | | Content Cell | Content Cell | 您还可以在表格中包括内联 Markdown 语法,例如链接,粗体,斜体或删除线。...

五月 6, 2022 · 2 分钟 · 337 字 · Me

中长期学习路径规划

中长期学习路径规划 参考 csdiy 和一些个人的经验 CS Basic IPADS Tutorial Mostly as an introduction to programming tools and research tackles. Including Shell\CMake\Vim\Git\System debugging… connect with [MIT: The Missing Semester] MIT 6.null: The Missing Semester of Your CS Education A detailed handbook for every CS student to learn tools that they certainly need but classes don’t teach. Just learn and be familiar advancely. Berkeley CS61A aka’SICP’ Full name: CS 61A: Structure and Interpretation of Computer Programs...

五月 6, 2022 · 2 分钟 · 322 字 · Me

CS 61A

Lecture 1 Intro Lecture 2 Function 函数签名Function signature 函数体Function body Frame scope-作用域 frame-栈帧 表示程序运行时函数调用栈 Lecture 3 Control & Iteration lamda 匿名函数 另一种条件句形式 函数print的返回值是None Lecture 4 Higher-Order Functions Higher-Order Functions 高阶函数 currying 柯里化 把多参数函数化为单一参数高阶函数 Lecture 5 Environments Decorator 装饰器 Midterm This expression/Evaluates to/Interactive Output def delay(arg) print('delayed') def g(): return arg return g delay(delay)()(6)() """">>> delayed delayed 6 """ Lecture 6 Recurion Verifying Recurion Function Verify the base case Treat fact as a functional abstration Assume that fact(n-1) is correct Verify that fact(n) is correct, assuming that fact(n-1) is correct Mutual Recurion 相互递归...

五月 6, 2022 · 2 分钟 · 217 字 · Me

最好的中学,最后的改革

读教改现实暨五月四日有感 我想今天的话题从教育开始,那第一个疑问就是,我们的教育制度合理吗? 答案一定是否定的,教育制度以及教育相关体制与教育的从业者和接受者、与我们每个人之间,都存在着尖锐的矛盾和突出的问题。 作为不完全应试教育的亲历人,在四线小城中,我的母亲是一位讲台前耕耘二十余载的一线中学教师,而我是一名在本地念完小、初、高十二年的普通学生,这之后,也体验着全国看来不算好也说不上坏的普通高校的高等教育。而在每一种维度之上,矛盾都无处不在。 我们大部分的高中教育,只是在不断地把原材料倾注进入高温的熔炉,以检验是否炼成合格的钢铁。而合格具有唯一的评判标准——高考分数。 高考过后,青年该如何从缺失的教育中获得人格的独立与人性的觉醒?如果你足够普通,而且足够不幸——那么你的经历将会告诉你:永远不会。我们只是流水线上生产的产品,没有一个装配工人会在意产品的个性。也许从不会思考自己对于人生的期待,也许从不会夺回属于自我的人生主动权,也许甚至被磨灭了爱与被爱的能力。 我们应该问出“为什么?”,这不是对虚无的意义进行刨根问底,而是跳脱出盲目而且刻板的环境,真真正正的作为自己——这个人生的主体,去发问,去思考,去行动。 我们的社会,我们的家庭,我们的教育,外在的一切赋予了我们无数的身份,无数的责任,无数的期许,但有一个身份迟迟没有被发掘:我可以是我自己。我不必刻意循规蹈矩,我不必事事小心翼翼,我不必前瞻后顾、不必在意他人的看法、不必追随他人的生活,我可以是我自己,我不必每天闷闷不乐,生存在压力和焦虑之下——我可以很快乐,只要我是我自己。 “最好的中学,最后的改革”1,王铮在北大附中的教育改革,虽声望不大,却震撼人心——足够激进,足够彻底,最终以一个足够无奈的方式妥协,画上一个足够悲壮的句点。 北大附中,尽管有北大冠名,实际上我们却对其知之甚少,只是惯常性的认为,作为知名高校的附属中学,一定是优质资源和优秀学生的聚集地——换言之,升学成绩一定令人羡艳。然而令我真正惊讶的是,在这样一所常人眼中的“巨无霸”中学里,曾经有过一场象征意味十足的教育改革——以理想为开端,最终以最丑陋最无奈最惨淡的方式结束。 我像刘姥姥进了大观园一样适应这所学校。这里没有班级,没有固定教室,高一高二混龄上课;没有早操、眼保健操,甚至没有上下课铃;每节课90分钟,教室不设讲台,桌椅没有方向,听课时可以朝前、朝窗、朝墙,甚至背向老师;学生不用穿校服,可以烫头披发,可以谈恋爱。2018年的迎新晚会,教导主任拿着话筒在台上说,我不反对大家谈恋爱,要找到一个合适的人度过漫长的人生不容易,不试一试你怎么知道自己要选择什么。 这里有着你能对中学所产生的一切幻想:自由,激情,青春,自我。然而就是在这种理想的“中学乌托邦”中,也不得不面对高考的阻截,是啊,如此“独立”的学生如何面对竞争残酷的高考呢?王铮给出了他的方案:2+1。 高中的前两年,蕴藏着素质教育的一切美好:两年级混合教学、自由选修、人文社科和自然科学区分学部——课程都是由最豪华的教师阵容所设计和实施、网络和电子设备自由、恋爱自由、甚至学生还具有参与制定学校规则和课程设计的自由。就在这种以引导和启发人性且尊重自由的教育氛围中,传授着“论语、红楼梦、说文解字、沈从文、百年孤独、张爱玲、唐诗、史记、城市学、城市中国、性别研究、创意写作、说理写作、颗粒艺术、服装设计、电影摄制、击剑、旱地冰球…”。 然后在高三的一年中,同学们又拿起高中的课本,坐在桌前解题、解题、解题,回到了无数人印象中平凡的高三,回到了与乌托邦一墙之隔却判若两个世界的现实。 割裂,是教育改革最显著的印象,不仅仅是学生体验的割裂,老师教学的割裂,亦是改革中理想与现实的割裂。 尽管有无数的毕业生赞叹“北大附中的教改让我认识了自己,开启了人生”,但最终,与现实格格不入的改革还是在一次次“我和孩子爸爸都是北大毕业的,孩子能考上北大吗”的质问中,无奈地向现实妥协,向中产阶级的焦虑和社会认知的排异妥协。 一地鸡毛,无人叹息。 我们挣脱了高中的应试教育,尊重学生的教育又在何方? 一种想当然的看法是,当跳脱了高中教育,自然就收获了幸福和自由,然而现实从未有什么标准答案,对于人和教育的看法也不可能随着一次考试的结束而剧变。升入大学,无论是北京海淀的名校还是小城市的无名学校,学生总是因无法在课堂学习到真正有价值的知识而选择自学,总是顺从中学时期做题的惯性去维护绩点,总是人云亦云地竞赛、保研;当我问,你为什么保研,回答往往是:为了更高的学历,为了更好的工作机会,为了更好的平台…然而,仅仅是保研,就能实现这一切的命题吗,难道你就不曾怀疑这与你之前“只要进入xx大学”的看法如出一辙? 或许大学教育和研究的双重属性下,许多老师没有精力开展教学工作;那学校又何必精心设计保研的秘诀,又何必树立“学习”这单一的评价中的优胜与得利者为典型大加宣传,又何必言必提竞赛、荣誉,却对真切的教育变革无动于衷? 当社会的浮躁风气向学校蔓延,功利与庸俗的价值观不断侵蚀,而无论是学生还是学校都无所抵抗,仅仅是被动接受时,这个时代当然可以被骂做“烂透了”。但我们,青年,是学校的主体,是社会的将来,是将要走向整个大地群体,我们不能做烂透了的。 五月四日,在百余年后的今天,我们无需外争主权,或许也暂时不必内惩国贼,但我们青年需要思索和争取真正属于自身的权利:独立思考的权利。 独立思考,赋予青年真正的力量,青年作为切实的个体思考,自然能收获属于青年的勇气:那是争取权利的勇气,成为自我的勇气,直视现实和改造现实的勇气。 https://mp.weixin.qq.com/s/X_UwmbvsHe7oKd7P8qZHTw ↩︎

五月 5, 2022 · 1 分钟 · 24 字 · Me

The missing semester

The missing semester Lecture 1 The Shell shell 是什么? 广泛使用的文字接口。 课程使用Bourne Again Shell, 简称 “bash” 。 是最广泛使用的一种shell。 在输入指令前需要打开终端(通常内置)。 使用shell 当打开一个Terminal时会显示如 [jon@xpanse missing-semester]$ 分别表示 用户名 @ 机器名 当前所在路径。 用空格来分隔程序的不同参数,若想输入含空格的字符串作为参数,可以使用“Hello world”,也可以使用Hello\ world转义空格。 shell实际上类似于一种编程语言,不仅仅能执行特定的程序或转递参数,甚至可以执行while loop、conditional(条件)等语句,可以定义函数,可以设置变量等等(后续课程将会详细介绍)。 environment variable环境变量 shell运行前内置的参数 PATH (路径变量) 调用指令echo $PATH实例: missing:~$ /bin/echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin which指令 绝对路径/相对路径 以 / 开头,那么它是一个 绝对路径,其他的都是 相对路径 。 路径中,. 表示的是当前目录,而 .. 表示上级目录。 pwd print working directory cd change directory dot means current directory/dot dot means parent directory...

五月 3, 2022 · 3 分钟 · 466 字 · Me

Modern CMake

Modern CMake form 上海交通大学IPADS新人培训,代码源自其github. Intro 什么是Makefile GNU工具集中的一个工具为Make,其配置文件Makefile,可以通过一些语法来描述规则去编译某个程序项目 使用CMake的一些语法,帮助编译为不同文件系统的Makefile文件 CMake通常用于管理开发项目 Step_0 hello: main.cpp $(CXX) -o hello main.cpp echo "OK" 首行,冒号前为目标target,即想要编译成为的可执行文件;冒号后是依赖dependency,即目标所依赖的main.cpp 之后用Tab缩进的语句为编译的Command,示例中有两行命令。 ​ line_1括号内CXX是Make默认的变量,它的值是系统的C++编译器,其后是编译指令 ​ line_2输出一个OK 构建 & 运行命令: $ make hello $ ./hello 如上简单介绍了CMake的语法,实际项目中按此书写代码必然显得臃肿。 Step_1 # # := 用于给变量赋值,除此之外还有 =、?=、+= 等不同的赋值方式。 # # 一般全大写变量用来表示允许调用 make 的时候传入的变量, # 全小写变量表示仅内部使用的变量。 # # 这里 CC 和 CXX 指定了要使用的 C 和 C++ 编译器。 # CC := clang CXX := clang++ # # Makefile 中的核心概念是 target(目标),定义 target 的基本 # 格式是(注意每一行 command 是必须用 tab 缩进的): # # name: dependencies # commands # # 要构建某个 target 时,使用如下命令: # # make target_name # # 下面 all 是一个 target,它依赖另一个 target:hello, # 意味着要构建 all,首先需要构建 hello。而 all 的 commands # 部分为空,表示构建 all 不需要额外命令。 # # ....

五月 3, 2022 · 2 分钟 · 221 字 · Me

C++ Primer

C++ Primer 第一章 开始 1.1 类型Type 从命令行运行编译器 $ CC prog1.cc $是系统提示符,CC是编译器程序的名字。编译器生成一个可执行文件,Win会将该文件命名为prog1.exe,UNIX系统中的编译器通常命名为a.out。 1.2 初识输入输出 iostream标准库,包含两个基础类型istream和ostream(输入流和输出流)。一个流就是一个字符序列,从设备读出或写入。 标准IO对象 cin是istream类型的对象,也成为标准输入standard input。 类似的有cout。 向流写入数据 **输出运算符(«)**在标准输出上打印信息 std::cout << "Enter two numbers:" << std::endl; **«接受两个运算对象,左侧必须是一个ostream对象,右侧是要打印的值。«**的运算结果是其左值,本例中即仍是std::cout,故可将输出请求连接起来。等价于: std::cout << "Enter two numbers:"; std::cout << std::endl; endl是被称为操作符(manipulator)的特殊值。写入的效果是结束当前行,并将于设备关联的缓冲区(buffer)中的内容刷新到设备中,保证目前为止程序所产生的所有输出都真正写入输出流中去,而不仅仅停留在内存中等待写入。 前缀std::指出定义在std的**命名空间(namespace)**中的。 作用域运算符::

五月 3, 2022 · 1 分钟 · 39 字 · Me