这个是跟随沐神学习深度学习的系列笔记,自己手写后对代码做了比较详细的注释(自己的理解)。本篇文章所对应的内容可跳转线性回归从0开始实现。
# 加载所需要的包
%matplotlib inline
import random
import torch
from d2l import torch as d2l
1. 生成数据集
# genrate our data
def gen_data(w, b, n_samples):
# genrate X: from distribution N(0,1), 'n_samples' sample, every sample has len(w) features
X = torch.normal(0, 1, (n_samples, len(w)))
y = torch.matmul(X, w) + b # torch.matmul(), tensor's high-dim mutiply
y += torch.normal(0, 0.01, y.shape) # add error term
return X, y.reshape((-1, 1)) # reshape(1,-1)--> a row, reshape(-1,1)--> a column
# genrate ture values of w and b
true_w = torch.tensor([2.0, -3.4]) # here must have the same type(e.g. both are float) of X
true_b = 3.2
# get data (X, y)
features, labels = gen_data(true_w, true_b, 1000)
# print a element of our features and labels
print('features:', features[0])
print('\nlabels', labels[0])
# 结果为
features: tensor([ 1.0330, -0.2211])