1.生成数据集
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=labels.size()),dtype=torch.float)
2.读取数据
PyTorch提供了data包来读取数据。由于data常用作变量名,我们将导入的data模块用Data代替。在每一次迭代中,我们将随机读取包含10个数据样本的小批量。
import torch.utils.data as Data
batch_size=10
# 将训练数据的特征和标签组合
dataset=Data.TensorDataset(features,labels)
#随机读取小批量
data_iter=Data.DataLoader(dataset,batch_size,shuffle=True)
#data_iter的使用跟前面的类似,读取并打印第一个小批量数据样本
for X,y in data_iter:
print(X,y)
break
tensor([[-0.8819, 0.0828],
[ 0.2298, 0.7712],
[-0.3712, -1.8766],
[-0.3710, 0.2108],
[-1.4011, 0.1674],
[-0.7357, -0.4200],
[-0.6656, 1.3309],
[-0.2409, -1.4489],
[-0.9532, 0.1188],
[-0.3495, 0.5370]]) tensor([ 2.1645, 2.0388, 9.8156, 2.7300, 0.8326, 4.1682, -1.6513, 8.6493,
1.8920, 1.6803])
3.定义模型
PyTorch提供了大量预定义的层,这使我们只需关注使用哪些层来构造模型。下面将介绍如何使用PyTorch更简洁地定义线性回归。
首先,导入torch.nn模块。实际上,“nn”是neural networks(神经网络)的缩写。顾名思义,该模块定义了大量神经网络的层。之前我们已经用过了autograd,而nn就是利用autograd来定义模型。nn的核心数据结构是Module,