工程机器学习基础

(周博宇)ME3382026春 2025秋  
2026春 2025秋
8.5(2人评价)
  • 课程难度
    中等
  • 作业多少
    中等
  • 给分好坏
    一般
  • 收获大小
    很多
选课类别:专业任务 教学语言:双语
课程类别:专业核心课 开课单位:机械与能源工程系
课程层次:本科 获得学分:3.0
课程主页:暂无(如果你知道,请点右上角“编辑课程信息”添加!)
点评写点评
排序学期
评分评分2条点评
user avatar   LiberCamo     2025秋
  • 难度:中等
  • 作业:中等
  • 给分:超好
  • 收获:很多

一、课程内容:需要注意本课程与教学大纲完全不符,请不要参考教学大纲

比计系的深度学习好太多了

这门课就是密歇根大学EECS 498/598在2022年的授课内容,课程名叫做Deep Learning for computer vision,是Justin Johnson斯坦福博士毕业后在密歇根大学开的课程,而Justin Johnson是李飞飞的博士生,是著名的Stanford CS231n在2019年之前的主讲人之一,所以EECS 498/598这门课程又是参考CS231n准备的,包括了深度学习入门所需的全部内容和计算机视觉基础内容

EECS 498/598网站:EECS 498-007 / 598-005: Deep Learning for Computer Vision | Website for UMich EECS course,这里可以下载assignments和slides,这门课在2019、2020和2022年开了三次,周博宇老师参考的是最新的2022年的课,但是公开的只有2019年的网课:https://www.bilibili.com/video/BV1zg411a7Wi/?share_source=copy_web&vd_source=37561cb5baba56273f32fe42f45acdd0,2022年比2019年多了Vision Transformer和self-supervise learning等,可以参考2025年Stanford CS231n的最新内容:https://www.bilibili.com/video/BV1ofamzFEKh/?share_source=copy_web&vd_source=37561cb5baba56273f32fe42f45acdd0。EECS 498/598在深度学习基础部分比CS231n讲的要详细的多,Justin Johnson本人讲课水平也非常高,而CS231n的其中几个主讲的博士生讲的相对不是很好,所以建议学EECS 498/598,然后去看CS231n关于大规模分布式训练、自监督学习、生成式模型、视觉和语言等内容

这门课程的内容主要包括:

1、深度学习基础:神经网络、优化、反向传播、神经网络训练细节(激活函数、初始化、学习率、正则化、模型集成、迁移学习等等)

2、网络架构:CNN及常用架构(VGG、ResNet、ResNeXt等)、RNN、LSTM、Transformer、Vision Transformer等

3、计算机视觉相关任务:物体检测(FCOS、YOLO、Faster R-CNN等)、语义分割、实例分割、视频处理、3D视觉等

4、自监督学习、生成式模型、强化学习等

二、作业

这门课作业是EECS 498/598六次作业中的前四次,作业应该是这门课最大的亮点,作业的质量非常高,认真完成可以极大帮助理解深度学习中最基础的内容,可以假期的时候把最后两次作业补上

六次作业如下:

1、pytorch教学和KNN实现

2、线性分类器和简单神经网络实现,还有一个网页可视化权重的任务

3、全连接网络、各种优化器和CNN实现

4、单阶段物体检测器(FCOS)和双阶段物体检测器(Faster R-CNN)实现

5、RNN、LSTM、attention LSTM和Transformer实现

6、VAE、GAN、梯度相关可视化和style transfer实现

第2、3次作业使用CIFAR 10数据集训练,第四次是PASCAL VOC 2007,第五次是COCO Captions,第六次VAE和GAN任务用了MNIST

前三次作业不能使用任何模块化API实现,包括nn开头的那些模块和autograd,也就是说要手写一切逻辑,包括反向传播,并且实现全部需要用vectorization的实现,有一定难度,没有手搓过各种架构的可以尝试写像batch normalization反向传播,softmax反向传播,CNN卷积操作池化操作的反向传播感受一下

第四次作业是六次作业中最难的,里面包含大量的物体检测的细节问题,张量的维度很容易搞混,再加上全部需要vectorization的实现。这次作业给出的scaffold code有一定问题,有一个地方把张量的前两维搞混了,还少写了几行代码,注意自己改一下

第五次作业不用手写反向传播了,不过前向传播逻辑还是需要手搓,需要实现的内容很多

第六次作业可以用模块化API了,难度不算大,但内容还是不少

三、考核方式

这么课不设置签到,40分project(EECS 498/598前4次作业),30分assignment(3次书面作业,与期末考试题型相同,难度不大),30分期末考试,期末考试据说上学期难度比较大,这学期难度下降了不少,考的都是最基本最简单的内容,并且老师说会根据整体情况调分,只要平时分拿满了总评就不会差。最后总评平均分80。我期末考了96,总评拿了98。

(第二次作业的网页可视化权重的任务非常难绷,搞了一个下午都没搞懂,最后放弃了,不过好像是版本什么的有问题,具体也不清楚)

(还有作业要用Google Colab,需要有登录Google的能力,用本地Jupyter也可以,不过需要GPU算力,像第四次作业的两个模型各在colab上训练了半个小时,不知道本地电脑需要多久)

(提醒一句:colab上免费gpu是有限额的,一定不要一直连接gpu,先写一部分然后连接gpu运行cell,然后把gpu断掉,gpu限额用完了一天都连不上了)

user avatar   Joshua_Jones     2025秋
  • 难度:困难
  • 作业:中等
  • 给分:一般
  • 收获:很多

收获超大,机械系的计系课。资料参考另一个评论,都可以找到。

但是期末考对本人来说还是太难。大家都不知道在学什么,就是那种没有刷过题让你做题的考试,还是比较超前。

想学东西不太在意绩点,可以考虑一下。期末占比应该是30%,占比适中。

不建议缓考,因为老师会捞,缓考可能就没机会了。


teacher avatar

周博宇

暂无教师主页

其他老师的「工程机器学习基础」课

周博宇老师的其他课