- 通过Dataset加载自己的数据集
#加载自己的数据集
dataset = Data.TensorDataset(data_tensor = x, target_tensor = y)
loader = Data.Dataloader(dataset = dataset,
batch_size = BATCH_SIZE,
....)
# 这里的loader会返回两个值,feature_data 和 target_data
for epoch in range(3):
for step, (batch_x, batch_y) in enumerate(loader):
# enumerate 的作用是给每一步设置了一个索引值
# batch_x 和 batch_y 对应 loader 的两个返回值
- Optimizer
SGD 随机梯度下降:
# SGD
opt_SGD = torch.optim.SGD(model.parameters, lr = LR)
SGD + Momentum:
# Momentum
opt_Momentum = torch.optim.SGD(model.parameters, lr = LR, momentum = 0.8
SGD + Momentum是SGD算法的变形,其中累计了之前的梯度,并影响当前参数的更新
Adam、AdaGrad、AdaDelta
# Adam
opt = torch.optim.Adam(model.parameters, lr=LR, betas=(0.9,0.99)
Adam等算法中,在每个minibatch中有时为每个坐标选择学习率,大大减少了为学习率随时间做调整的需要
RMSprop
# RMSprop
opt = torch.optim.RMSprop(model.parameters, lr=LR, alpha=0.9)
RMSprop和Adam的区别在于累计平方梯度的求法不同,RMSprop算法增加了一个衰减系数来控制历史信息的获取多少,二Adam_Grad是直接累加平方梯度
优化器的调用
output = model(x)
loss = loss_func(output, true)
opt.zero_grad()
loss.backward()
opt.strp()