PyTorch 操作
训练
model.train() # set to train mode
optimizer = torch.optim.SGD(model.parameters(), lr = 1e-5, momentum = 0.9)
criterion = torch.nn.MSELoss(reduction = "mean") # set loss function
train_pbar = tqdm(train_loader, position = 0, leave = True)
for x, y in train_pbar:
x, y = x.to('cuda'), y.to('cuda') # move data to GPU
pred = model(x) # output predict result
loss = criterion(pred, y) # calc loss
loss.backward() # calc gradient
optimizer.step() # update parameters
optimizer.zero_grad() # clear gradient
测试
model.eval() # set to eval mode
train_pbar = tqdm(train_loader, position = 0, leave = True)
for x, y in train_pbar:
x, y = x.to('cuda'), y.to('cuda') # move data to GPU
with torch.no_grad(): # disable gradient calc
pred = model(x) # output predict result
loss = criterion(pred, y) # calc loss
total_loss += loss.cpu().item() * len(x)
Deep Learning(深度学习)
步骤
- Define a set of function
- Goodness of function
- Pick the best function
Backpropagation(反向传播)
Forward Pass
当前偏微分等于上一级神经网络的输出。
Backward Pass
反向建立神经网络,就可以通过输出直接得到偏微分。
预测训练过程
Design the model
可以设计多元函数,但是过于复杂的函数往往会导致函数 过拟合。
Regularization
添加对 的限制,使得生成的函数有平滑性要求。
分类训练过程
Design the model
直接使用多元函数拟合会导致函数偏移,分类时候使用贝叶斯。
使用高斯函数可以估计邻近点的概率。通过不断修改 和 使得高斯函数逐渐逼近。
如果结果超过一半,则可以分到第一类。
逻辑回归训练过程
Design the model
修改 和 可以得到一系列函数。
Choose Loss Function
Cross Entropy 可以有更快的收敛速度。
Multi-class Classification
逻辑回归的缺陷
有时候无法完全分离两类,需要使用深度神经网络来实现。