目录
一.书籍及讲课视频
视频:https://courses.d2l.ai/zh-v2/
视频的课程安排中,这四部分分别代表书上对应的内容、PPT、对应代码、视频链接
二.笔记(按书的章节划分,每一章内容包括我认为的重难点、易错点以及课后题)-----更新中
1. 前言
1.1 安装
直接用colab执行
1.2 符号
标量,向量,张量比较
标量:0维数组,只有大小没有方向,scalar
向量:1维数组,有大小也有方向,vector
矩阵:2维数组
张量:n维数组(应该是n>=1),表示由一个数值组成的数组,这个数组可能有多个维度,可以用坐标系表示,tensor
2.预备知识
2.1 数据操作---广播机制
在大多数情况下,我们将沿着数组中长度为1的轴进行广播
如果两个张量形状不同,先复制为相同形状再逐元素相加,如:
a为3行一列,b为1行2列,相加时,由于形状不同,先将a改为3行2列,将b改为3行2列,再相加
2.2数据预处理--课后习题
练习题目
创建包含更多行和列的原始数据集。
- 删除缺失值最多的列。
- 将预处理后的数据集转换为张量格式。
2.2.1分段代码及运行结果
2.2.2 整体代码
import os
import torch
import pandas as pd
#创建包含更多行和列的原始数据集
os.makedirs(os.path.join('..', 'data'),exist_ok=True)
data_file = os.path.join('..','data','house_tiny2.csv')
with open(data_file,'w') as f:
f.write('NumRooms,Alley,Distance,Price\n')
f.write('1,Pave,10,100\n')
f.write('2,NA,30,200\n')
f.write('5,Pave,NA,400\n')
f.write('NA,Pave,NA,NA\n')
#显示数据集
data = pd.read_csv(data_file)
data
#第1题:删除缺失值最多的列
#写了半天总是出错,参考https://blog.csdn.net/qq_42890800/article/details/115287227?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162496482816780265412479%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162496482816780265412479&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-115287227.first_rank_v2_pc_rank_v29&utm_term=%E5%8A%A8%E6%89%8B%E5%AD%A6%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E8%AF%BE%E5%90%8E%E9%A2%98&spm=1018.2226.3001.4187
#值为NaN称作缺失值,值不为NaN称作有效值
c_list = data.count() #每列有效值的个数
min_loc,min,i = 0,100,0 #min_loc有效值数量最少的列,min最小的有效值数量,i第几列
for c in c_list: #例如第0列有3个有效值,c为3
if c < min: #如果c小于最小的有效值数量
min_loc = i #那么有效值数量最少的列为第i列
min = c #最小的有效值数量改为c
i += 1 #下一列
#获取了有效值数量最少的列的列数,即缺失值最多的列的列数,删除掉它
del data[c_list.index[min_loc]]
data
#第2题:将预处理后的数据集转换为张量格式
#首先把缺失值用均值补上
data = data.fillna(data.mean())
data
#再把NaN改为0/1
data = pd.get_dummies(data, dummy_na=True)
data
#最后转为tensor
data = torch.tensor(data.values)
data
2.3 线性代数
求和时,指定axis=0,是指
求和所有行的元素来降维(轴0)= 计算每一列的和 = 输入矩阵沿0轴降维以生成输出向量 = 输入的轴0的维数在输出形状中丢失。例如: