Datawhale AI夏令营

基础概念

ipynb

.ipynb 文件是 Jupyter Notebook 的文件格式,用于保存 Jupyter Notebook 中的代码、文本、可视化等。Jupyter Notebook 是一种交互式的开发环境,广泛用于数据科学、机器学习、教学和研究等领域。也可以使用 Markdown 和 LaTeX 来添加格式化文本和数学公式

IPython 提供了一个增强的交互式 Python shell,比标准的 Python 解释器更加强大,支持自动补全、魔法命令(magic commands)、丰富的输入输出历史等功能。在 Jupyter 环境中,IPython 是用于执行 Python 代码的内核

虽然 Jupyter Notebook 最常用于 Python,但它也支持多种编程语言(例如 R、Julia 和 Scala),通过安装相应的内核(Kernels)可以实现多语言支持

Jupyter 是 “Julia, Python, and R” 的缩写,最初专注于这三种语言,但现在已经支持几十种语言

.ipynb 文件实际上是一个 JSON 格式的文本文件(可以用记事本/VScode打开),包含了 Notebook 的所有内容,包括代码单元(code cells)、文本单元(markdown cells)、输出结果等。一个简单的 .ipynb 文件示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# This is a markdown cell"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hello, world!\n"
]
}
],
"source": [
"print('Hello, world!')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}

注意:并不是Jupyter包含环境,而是环境包含了Jupyter,在conda的虚拟环境中install Jupyter才可以使用,所以一个Jupyter对应的是一个特定的环境/内核

数据准备

安装依赖库

  • 使用 pip install -r requirements.txt 安装所需的库。

导入库

  • 导入 ospandasxarray 以及 PyTorch 的数据处理模块。

配置数据路径

  • 设置数据特征和数据真值的路径。
  • 指定数据年份和预测时间步长。

定义特征和真值类

  • Feature 类负责加载特征数据。
  • GroundTruth 类负责加载真值数据。

定义数据集类

  • mydataset 类整合特征和真值的加载功能,方便训练时取数据。

实例化数据集和 DataLoader

  • 创建数据集实例并使用 DataLoader 将数据集分割为训练集和验证集。

模型构建

定义模型

  • 构建一个简单的卷积神经网络模型 EnhancedModel,包含一个卷积层和一个激活函数。

定义损失函数

  • 使用 SmoothL1Loss 作为损失函数。

模型训练

初始化模型参数

  • 使用 Xavier 初始化方法初始化模型参数。

训练模型

  • 设置训练参数(如学习率、权重衰减等)。
  • 进行模型训练和验证,记录损失值,并在每个 epoch 结束后保存模型权重。