跳转到内容

0:迈出机器学习的第一步

机器学习Banner

~(∠・ω< )⌒☆

欢迎来到机器学习的世界!

机器学习(Machine Learning,ML)是人工智能的一个重要分支,从某种程度上来说,它也是人工智能的基础。它通过让计算机从大量数据中自动学习规律,从而完成分类、预测、识别和决策等任务。机器学习的核心思想是利用数据训练模型(因此对于训练来说,好的数据称之为黄金也不为过),使模型能够根据已有经验对未知数据进行推断,并随着数据的增加不断优化性能,机器学习是这个时代的大势所趋,也是无数有志向的人士在共同讨论与深研的话题。

那么,为什么不尝试在大学四年的开头直接尝试走进前沿与热点呢?

别担心!既然你已经来到了这个地方,坐在了现在的座位上开始沉下心来阅读这些要求,想必你已经具备了掌握接下来的知识的决心。

  • 微积分:重点掌握求导、偏导数、链式求导、梯度的概念与梯度的计算。
  • 线性代数:核心是矩阵的运算和线性变换。矩阵的运算里有必要拓展了解以下矩阵求导。
  • 概率论:高中基础足够理解大多数的概念,大部分是用在指标计算等等,只需要对新的术语进行搜索熟悉就好啦。

在去了解这些知识的时候,学校大概也在同步进行教学吧,自己主动去了解可以说是和学校课程相得益彰的事情~

💡Tips:不用深钻太多,足够用来解决问题即可!

你需要学会掌握的编程语言:

  • python基础:可以看网课或者自己用文档学习(比如:Python3 教程 | 菜鸟教程)不需要很多内容,只用理解大概的语法以及做到能够读懂,能够解决简单问题即可。由于机器学习大部分的代码是依赖pytorch库中的函数,很多python操作在你后面的题目中并不会用上。
  • 数据处理:学会使用NumPy、Pandas等库进行数据预处理。

推荐pycharm或者vscode,可以使用其中的jupyter插件。

请了解深度学习基本概念(非常推荐以动手学深度学习为主(有免费的教材与讲解视频,还附赠源代码和课程讨论区),吴恩达深度学习作为辅助理解),Pytorch文档Pytorch框架教学,当然,也可以自己去阅读文档,浏览博客等等。

作为一名软件工程专业的学生,我相信你的电脑一定配置还不错,深度学习是需要算力的(可以想想是在算什么?),CPU虽然能胜任大部分计算任务,但是对于深度学习来说并不是最适合的,而GPU能加速计算过程,我们后面的任务需要用到GPU来加速你的计算,否则一个任务你可能会等待很久,如果你的电脑有独立显卡,那最好了。如果没有,那也不需要着急,因为现在有很多平台会提供免费的算力资源。 你可以使用以下平台获取算力:

  1. kaggle(实名注册后每周30小时的GPU加速时间,可用T4*2,P100)
  2. 阿里云(新用户可以选择免费使用,连续三月,每月250算力)
  3. 九天·毕昇(注册后 随机参加一个比赛可以获得1000算力豆折合下来是200 V100(16G)时)
  4. autoDL (有学生优惠95折,是目前使用最广泛的算力租借平台)
  5. 其他算力租借平台

⚠️环境配置(你开始训练的场地)

Section titled “⚠️环境配置(你开始训练的场地)”

如果你希望在自己的电脑或服务器上运行模型训练任务,那么配置机器学习环境是必须的。当然,也可以使用 Kaggle Notebooks、Google Colab 等在线平台,它们已经预装了常用的深度学习框架,可以帮助你快速开始实验,暂时减少环境配置带来的困扰。不过掌握本地环境的配置方法仍然是一项重要的基础技能。

怎么样进行环境配置?

  1. 李沐的动手学深度学习视频中有环境的配置过程可以参考

  2. 你已经是一名软件工程的学生了,网络上有丰富的教程你可以自行选择,所以STFW吧

环境要求有以下这些(其实跟着李沐应该没什么问题)

conda/miniconda,jupyter,torch(如果有GPU请注意下载GPU版本),torchvision,d2l/d2l-zh,以及后续做题可能需要的库。

下载库的时候,速度慢的话可以换源(换源是什么意思?)

💡Tips :conda是一个开源的软件包管理系统和环境管理系统,它主要用于安装多个版本的软件包及其依赖关系,并能轻松地在它们之间切换。建议你使用anaconda或者miniconda创建你自己的环境进行环境管理。

一些简单入门的代码练习!😚

1、Python基础(列表、元组、字典)

Section titled “1、Python基础(列表、元组、字典)”

在机器学习中,一个数据集通常由样本名称、特征数量和标签组成。

假设我们有一个数据集,其中每个数字代表一张图片的编号

请根据下面的信息完成代码,并展示输出内容。

image_ids = [101, 102, 103, 104, 105]
dataset = {
"name": "Microsoft vs Code", # 微软大战代码!
"labels": ("microsoft", "code")
}
# (1)输出数据集名称
print(_____)
# (2)取出前三张图片编号
first_three = _____
# (3)输出最后一张图片编号
last_image = _____
# (4)新增键值对:"num_images": 5000
_____

机器学习训练通常需要读取数据文件。

请你在代码所属目录下创建一个data.txt文件,内容如下:

我当年是入学前的暑假学了python,说实话这是一个新奇的语言,它有类似于说话般的逻辑,很容易理解,而且有着充分兼容的第三方库。但是python确实有个致命的弱点:它的编译速度很慢,远不及C++Rust等等语言。大多数使用的库的底层其实是用C++或者C语言造出来的,而我们为什么用python?因为这是一个天生适合组织和调度的编程语言,能缩减大量的编程时间。所以你今天想学一点python吗?

请你补全代码,统计文件中一共有多少个python。

  • 创建一个10*10的array A,并用1-100的随机值填充。

  • 创建一个10*10的单位矩阵B,并将A与B作矩阵乘法,得到矩阵C。打印出矩阵C的值。

  • 条件筛选操作:在矩阵A中找出大于80的元素并替换为0。

  • 分块计算平均值:将10x10矩阵拆分成4个5x5矩阵,求每个子矩阵的均值。

  • 张量创建和属性
import torch
# 创建张量 A:形状 (3, 4),元素为 [0, 11] 的整数
A = torch.arange(12).reshape(3, 4)
# 创建张量 B:形状 (3, 4),服从标准正态分布
B = _____
# 判断以下操作是否正确:
# (1) A.shape 返回 torch.Size([3, 4])
# (2) B.dtype 默认返回 torch.float32
# (3) A.device 默认为 GPU
  • 张量运算与广播
a = torch.tensor([[1], [2], [3]]) # shape (3, 1)
b = torch.tensor([4, 5, 6]) # shape (3,)
# 计算 c = a + b,并写出 c 的形状
c = _____
# 计算 d = a * b,并解释广播规则
d = _____
  • 张量拼接
import torch
a = torch.tensor([[1, 2],
[3, 4]])
b = torch.tensor([[5, 6]])
# 将 a 和 b 按行拼接(什么样的可以按列拼接?如何按列拼接?或者还有其他维度的拼接)
c = _____
print(c)
# 补全代码并且写出c的形状

现在是个AI发达的时代,如果说禁止使用AI似乎是不太可能的。AI会极大程度上提升我们的效率,但是也同样会让我们学到的东西缩水。我们不反对你使用AI,但是必须遵循几点:

1、所有的代码必须自己理解,并且明白为什么要这么写;

2、我们希望能看到你留下学习的痕迹,包括但不限于笔记、代码注释等等;

3、希望你能聪明地使用AI,毕竟学习这条路,学了多少只有自己心里才清楚。

那么加油吧!

  • 代码文件

    :将代码部分的.ipynb文件作为邮件附件,命名格式:ml-0-姓名-学号.ipynb

  • 文档报告

    :将写有这道题目文本解答的.md文件作为邮件附件,命名格式:ml-0-姓名-学号.md

  • 邮箱: gimmerml401@163.com

  • 主题: 0-姓名-学号

出题人:出题人头像  Parzival

QQ:450621609

邮箱:450621609@qq.com