2024,重新开始深度学习。
第一步:李沐动手学深度学习
课程网址:https://courses.d2l.ai/zh-v2/
包含教材和视频网址链接
Jupyter notebook安装
目前在本地先使用cpu版本pytorch,我的本地已经安装好conda,跟着教材创建虚拟环境并下载d2l工具包
创建虚拟环境
conda create --name d2l python=3.9 -y
conda activate d2l
配置pip清华源,否则接下来安装torch容易超时报错
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install torch==1.12.0
pip install torchvision==0.13.0
mkdir d2l-zh && cd d2l-zh
解压工具包
unzip d2l-zh.zip && rm d2l-zh.zip
cd pytorch
将虚拟环境注入jupyter notebook
conda install ipykernel
python -m ipykernel install --user --name d2l --display-name d2l
运行
jupyter notebook
测试环境与学习数据操作
1.torch张量的广播机制
疑问点:这个操作有什么好处?感觉容易引入很难被发现的问题
为了避免张量广播机制引发的错误,可以采取以下几种方法:
- 显式地调整张量的形状:可以使用torch.reshape()函数或者tensor.view()方法来显式地调整张量的形状,使其符合广播规则。通过调整张量的形状,可以确保在进行元素级操作时,张量的维度是兼容的。
import torchtensor_1 = torch.ones(2, 3, 4) # 2*3*4
tensor_2 = torch.ones(3, 1) # 3*1# 显式地调整张量的形状
tensor_2_expanded = tensor_2.expand(3, 4) # 扩展为3*4的张量# 进行元素级操作
tensor = tensor_1 + tensor_2_expandedprint(tensor)
- 使用torch.unsqueeze()函数:可以使用torch.unsqueeze()函数在指定的维度上增加一个维度,以满足广播规则。
import torchtensor_1 = torch.ones(2, 3, 4) # 2*3*4
tensor_2 = torch.ones(3, 1) # 3*1# 在第二个维度上增加一个维度
tensor_2_expanded = torch.unsqueeze(tensor_2, dim=0) # 扩展为1*3*1的张量# 进行元素级操作
tensor = tensor_1 + tensor_2_expandedprint(tensor)
- 使用torch.broadcast_to()函数:可以使用torch.broadcast_to()函数将张量广播到指定的形状,以满足广播规则。
import torchtensor_1 = torch.ones(2, 3, 4) # 2*3*4
tensor_2 = torch.ones(3, 1) # 3*1# 将tensor_2广播到2*3*4的形状
tensor_2_broadcasted = torch.broadcast_to(tensor_2, (2, 3, 4))# 进行元素级操作
tensor = tensor_1 + tensor_2_broadcastedprint(tensor)
2.数据处理pandas的操作-处理缺失数据
isna输出缺失值矩阵
使用sum统计每一列的缺失值个数
使用idxmax得到最大值的索引
使用drop删除含缺失值最多的列
参考博客:
https://blog.csdn.net/qq_41084438/article/details/102862300
https://blog.csdn.net/wxyczhyza/article/details/120821510
https://blog.csdn.net/2301_76381099/article/details/129228928