一般神经网络的训练包括几个重要的步骤,数据准备、初始化权重、激活函数、前向计算、损失函数、计算损失、反向计算、更新参数,直到收敛或达到终止条件。
本篇介绍神经网络在iris数据集上完成多分类的任务。
程序头引入必要的包
import torch
import torch.nn.functional as F
from sklearn.datasets import load_iris
from torch.autograd import Variable
from torch.optim import SGD
动态地判断GPU是否可用,方便在不同类型的处理器上迁移。
use_CUDA = torch.cuda.is_available()
加载数据集,sklearn中有iris的数据集,在这里只要加载就可以使用了:
iris = load_iris()
# dict_keys(['target_names' , 'data', 'feature_names', 'DESCR', 'target'])
数据预处理,包括从数据集里区分输入/输出,最后把输入/输出数据封装成pytorch期望的Variable格式:
x = iris['data']
y = iris['target']
# x.shape (150,4)
# y.shape (150,)
x = torch.FloatTensor(x)
y = torch.LongTensor(y)
x, y = Variable(x), Variable(y)
神经网络模型定义,pytorch中自定义的模型都需要