1.from torch.utils import data:data里有部分数据读取工具。
这里用到的-1.Tensordataset:类似于一个1打包函数:TensorDataset 可以用来对 tensor 进行打包,包装成dataset(类似zip)。就好像 python 中的 zip 功能。该类通过每一个 tensor 的第一个维度进行索引。因此,该类中的 tensor 第一维度必须相等. 另外:TensorDataset 中的参数必须是 tensor
(行数相同,类型为tensor){对于元组我们可以用*x的方式进行解包}
2.data_iter=torch.utils.data.DataLoader(dataset, batch_size=1,
shuffle=False, sampler=None,
batch_sampler=None, num_workers=0,
collate_fn=None, pin_memory=False,
drop_last=False, timeout=0,
worker_init_fn=None,
multiprocessing_context=None)
用于读取dataset,类似于pd.read类型的1.batch_size指的一次取的批量大小,2.shuffle=False, sampler=None,指的是否打乱以及不打乱用什么方式取得,3.取得批量超额是否舍弃最后一批,4.timeout=0,超额截断。返回值是一个元组,中间装有多个(X,y)小元组。
3.from torch import nn:装有神经网络辅助函数
4.nn.Sequential(),把括号里的层都连起来,成一个大网
5.nn.Linear(2, 1),打造一个线性层(无激活函数),且(2,1)分别指输入输出特征,即w为(2,1),相当于上一层是两个节点,这一次一个节点
6..weight.data,.bias.data,可以调用对应的w和b。eg:
-1:net = nn.Sequential(nn.Linear(2, 1)):定义了一个连接网络,里面只有一层linear
-2:进行对net网络第一层(linear)的调用
net[0].weight.data.normal_(0, 0.01):用平均值为0,方差为1的随机数填满 net[0].bias.data.fill_(0):全部替换填充为0
7.l2范数
nn.MSELoss()
8.通过这个调用优化更新方法,比如sgd
torch.optim
9.正式优化:标准循环批次
for epoch in range(num_epochs): for X, y in data_iter:(data_iter为包含了多个元组的大元组) l = loss(net(X) ,y) trainer.zero_grad():对优化器梯度清零,谁使用对谁清零 l.backward() trainer.step():进行一次优化 l = loss(net(features), labels)