Add comments for Stanford CS144

This commit is contained in:
Jinming Hu
2021-06-20 20:06:21 +08:00
parent fde2c84fd1
commit 49ae0076fb
2 changed files with 39 additions and 44 deletions

View File

@@ -0,0 +1,39 @@
课号:[Stanford CS144 Fall 2020](https://cs144.github.io/)
教授Keith Winstein& Nick McKeown
评论贡献者:[Jinming Hu](https://conanhujinming.github.io/)
- [ ] Videos有mooc版本的我觉得讲得不好这里就不贴了
- [X] [Lab x 7](https://pdos.csail.mit.edu/6.S081/2020/labs/guidance.html)
- [X] [AutoGrader](https://pdos.csail.mit.edu/6.S081/2020/labs/guidance.html)
- [X] [Slides & Reading](https://pdos.csail.mit.edu/6.S081/2020/schedule.html)
## 课程信息
计算机网络导论。前五个lab是从零开始写一个能用的TCP后面的lab则是实现了计算机网络其他层的内容。
## 适合人群
适合学完数据结构+操作系统的同学,适合作为第一门计算机网络的课程。
## 课程评价
我不太适应MOOC的授课视频。所以这门课的精髓在lab上前4个lab难度不大主要是测试不够强很多问题到lab4的时候才会暴露出来所以lab4和lab7会需要花比较多的时间。个人觉得是非常好的lab对TCP和计算机网络的知识的掌握帮助很大。美中不足的是这门课开得时间不长所以lab的文档的问题比较多经常需要“面向测试编程”。视个人基础大概需要100到200小时左右的学习时间。
## 需要注意的坑点
1. 有一些设计的选择细节并没有在PDF里给出我有的时候需要去看test case才会知道Lab希望怎样去设计。不过也许这些内容在上课的时候会提到。
2. Lab2和Lab3的test case不够多导致错误或者是与Lab期望的设计不符的实现也能通过全部的test case。然后在Lab4里这些问题会全部暴露出来......结果就是在做Lab4的时候完全不能信任自己在Lab2和Lab3里的相应实现这样也大大增加了debug难度。
3. Lab4里有两个test case即fsm_ack_rst和fsm_ack_rst_relaxed期待的行为是完全相反的。实际上在官方的FAQ页面上给出的状态机是与fsm_ack_rst期待的行为一致但Lab4默认启用的却是fsm_ack_rst_relaxed......类似的问题挺多的所以有些情况下不得不去读test case才知道需要实现什么样的功能。
4. 官方提供的VirtualBox Image中的GDB是有bug的在cmake_build_type=Debug生成的binary上不能正确地打断点。在Lab4之前我还能靠肉眼调试但是Lab4实在是肉眼调不动了不得不寻求解决方案。后来问了一位之前也做过这个Lab的清华大佬他告诉我说他用的是LLDB。我就赶紧换了LLDB这才能愉快的进行调试。
## 非官方资料推荐
- 暂无
## 后续课程推荐
- 暂无

View File

@@ -1,44 +0,0 @@
课号:[Stanford CS231N](http://cs231n.stanford.edu/)
教授Feifei Li等
评论贡献者:[Zhang-Each](https://github.com/Zhang-Each)
- [X] VideosB站上到处都是还有字幕
- [X] Assignment * 3每个Assignment工作量都比较大可以分割成更小的
- [X] AutoGrader每个notebook中自带一些测试用例足够验证代码的正确性
- [X] Slides & Reading见课程网站
## 课程信息
- 深度学习导论课程非常经典的入门课从机器学习开始一步步讲到深度学习神经网络从MLP逐渐扩展到CNNRNNLSTMGANTransformer等模型对于深度学习中的CV和NLP均有所涉猎
- 3个assignment的工作量比较大使用Python和Jupyter Notebook完成**大部分内容都是基于numpy从底层开始实现**少部分任务可以直接使用pytorch等深度学习框架每个lab的具体内容主要有
| Assignment编号 | 具体内容 |
| -------------- | ------------------------------------------------------------ |
| 1 | 实现SVM和线性分类器算法实现KNN算法实现神经网络全连接层和激活函数层的前向传播和反向传播算法并搭建一个两层的MLP |
| 2 | 实现卷积层、池化层、标准化层和Dropout层的前向传播和反向传播并组成一个有标准化层的MLP和一个有三层的CNN使用pytorch或tensorflow实现一个CNN测试的task都是图片分类 |
| 3 | 实现RNN和LSTM层的前向传播和反向传播并组成循环网络测试在Image Caption任务中的表现实现Transformer模型的关键组件并测试Transformer模型在Image Caption任务中的表现实现GAN并测试其在手写数字生成任务中的表现实现深度学习可视化相关的一些函数 |
- 同时作业**配备了相当数量的测试点**,基本每写一个关键函数都会提供一个单元测试来判断有没有写错,一般误差在标准范围内就可以放心进行下一步了
## 适合人群
- 深度学习入门并且具有一定的数学基础和Python编程能力的人(主要是numpy等库的api需要掌握的比较熟练)
## 课程评价
- 个人认为**深度学习入门神课这一称号当之无愧**上课内容是一个方面我认为这门课最大的价值在于它的3个assignment做完之后不仅对课上讲到的各种概念有了更底层的理解也非常锻炼Python编程能力并且能帮助你掌握numpy和pytorch等库中的关键api
- 实现一系列神经网络中的经典模型是一件比较有成就感的事情这些assignment做的过程也非常愉快
- 同时notebook中配备的大量测试点也可以提供及时的反馈信息我认为要完成这些作业很重要的一点就是要将slides中将的公式和实际代码相结合并且反向传播部分的作业中需要进行大量的求梯度推导个人认为需要一定的数学能力
## 非官方资料推荐
- 深度学习中的经典论文,详情见课程网站
- Github上也有很多公开的课程笔记可以选择性使用
- 给自己的[博客](https://zhang-each.github.io/)引个流博客中的【手写神经网络】系列的博客是我在完成assignments时的一些心得体会和公式推导希望能够帮到您
## 后续课程推荐
- CS224N 基于深度学习的自然语言处理
- CS224W 图机器学习(实际上是图神经网络导论)