《动手学深度学习》pytorch学习笔记
Task01:线性回归、Softmax与分类模型、多层感知机
刚开始学习pytorch,用打卡的方式来记录一下
1.线性回归
线性回归属于判别模型。什么是判别模式?
判别模型是由数据直接学习决策函数 y=f(x),或者由条件概率分布概率 P(y|x) 作为预测模型。判别模型是监督学习的一类,另外一类是生成模型。
生成模型即由数据学习联合概率密度分布函数 p(x,y) ,然后求出条件概率分布p(y|x) 作为预测的模型。
线性回归的基本要素
模型: 即输出与输入为线性关系,比如经常用 y=wx+b 来表示
数据集: 通常分为训练集和测试集。比如在房价预测中,一座房子为一个样本,它的真实售价为标签(y),用来预测标签的因素为特征(x)。
损失函数: 在模型的训练过程中,需要衡量预测值和真实值之间的误差。一般情况下选择平方损失。
优化函数: 由于大多数深度学习模型不能直接求出解析解,因此只能将优化算法进行有限次迭代来尽可能降低损失函数的值。其中,小批量随机梯度下降(mini-batch stochastic gradient descent)在深度学习中被广泛使用。它的算法很简单:先选取一组模型参数的初始值,如随机选取;接下来对参数进行多次迭代,使每次迭代都可能降低损失函数的值。在每次迭代中,先随机均匀采样一个由固定数目训练数据样本所组成的小批量(mini-batch) B ,然后求小批量中数据样本的平均损失有关模型参数的导数(梯度),最后用此结果与预先设定的一个正数的乘积作为模型参数在本次迭代的减小量。
下面是线性回归模型使用pytorch的简洁实现:
import torch
from torch import nn
import numpy as np
torch.manual_seed(1)
print(torch.__version__)
torch.set_default_tensor_type('torch.FloatTensor')
生成数据集 这里使用线性模型来生成数据集
num_inputs = 2
num_examples = 1000
true_w = [2, -3.4]
true_b = 4.2
features = torch.tensor(np.random.normal(0, 1, (num_examples, num_inputs)), dtype=torch.float)
labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
labels += torch.tensor(np.random.normal(0, 0.01, size=labe
读取数据集
import torch.utils.data as Data
batch_size = 10
# combine featues and labels of dataset
dataset = Data.TensorDataset(features, labels)
# put dataset into DataLoader
data_iter = Data.DataLoader(
dataset=dataset, # torch TensorDataset format
batch_size=batch_size, # mini batch size
shuffle=True, # whether shuffle the data or not
num_workers=2, # read data in multithreading
)