一、torch.nn.Sequential()函数
此函数的作用是将一系列的运算模块按顺序搭建成一个多层的神经网络。
在下面的代码例子中,运算模块就包括了从输入层到隐含层的线性映射torch.nn.Linear(input_size, hidden_size)、隐含层的非线性sigmoid函数torch.nn,sigmoid(),以及从隐含层到输出层的线性映射torch.nn.Linear(hidden_size, output_size)
#定义神经网络架构,features.shape[1]个输入单元,10个隐含单元,1个输出单元
input_size = features.shape[1]
hidden_size = 10
output_size = 1
batch_size = 128
neu = torch.nn.Sequential(
torch.nn.Linear(input_size, hidden_size),
torch.nn.sigmoid(),
torch.nn.Linear(hidden_size,output_size)
需要注意的是,Sequential()函数里面的层次并不与神经网络的层次严格对应,而是指多步的运算,它与动态计算图中的层次相对应。
二、损失函数torch.nn.MSELoss()
cost = torch.nn.MSELoss()
它是一个计算均方误差的损失函数,是一个函数指针,赋予了变量cost。在实际计算的时候,我们只需要调用cost(x, y)就可以计算出预测向量x目标向量y之间的均方误差。
三、优化器torch.nn.SGD()
optimizer = torch.optim.SGD(neu.parameters(), lr = 0.001)
torch.nn.SGD()调用了pytorch自带的随机梯度下降算法(stochastic gradient descent,SGD)。在初始化optimizer的时候,需要待优化的所有参数,以及执行梯度下降算法的学习率 lr = 0.001。
optimizer.zero_grad() #清零所有参数的梯度值 loss.backward() #反向传播算法 optimizer.step() #将每个参数的梯度和学习率等超参数结合起来,更新模型的参数,从而最小化损失函数。