动手学深度学习task1 task2
task1:环境配置
之前已经安装过anaconda,跳过了miniconda的安装
1.cuda安装
首先需要检查自己电脑显卡所支持的cuda版本,确保已经安装cuda
命令行输入:nvidia-smi
我的电脑支持12.0的cuda
安装完成后可以输入:nvcc --version检查是否成功安装
我这里安装的是12.0版本
环境创建
命令行输入
conda create -n d2l-zh -y python=3.8 pip
d2l-zh表示环境名
安装Pytorch
命令行输入
conda install pytorch torchvision torchaudio cpuonly
激活d2l环境
命令行输入
conda activate d2l
安装d2l包
命令行输入
pip install d2l
这里只能通过pip进行安装,使用conda install会失败
task2:预备知识学习
数据操作
主要是数据的获取和读入计算机后的处理
import torch
import pandas as pd
import os
os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
f.write('NumRooms,Alley,Price\n') # 列名
f.write('NA,Pave,127500\n') # 每行表示一个数据样本
f.write('2,NA,106000\n')
f.write('4,NA,178100\n')
f.write('NA,NA,140000\n')
# 读取数据
data = pd.read_csv(data_file)
# 处理缺失值
inputs = data.iloc[:, :2]
outputs = data.iloc[:, -1]
inputs = inputs.fillna(inputs.mean()) # 在nan处填写该列的平均值
# 对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。 由于“巷子类型”(“Alley”)列只接受两种类型的类别值“Pave”和“NaN”, pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。 巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。
inputs = pd.get_dummies(inputs, dummy_na=True)
# 转为张量格式
X, y = torch.tensor(inputs.values), torch.tensor(outputs.values)