一.构建神经网络
neu=torch.nn.Sequential( #创建神经网络,储存到变量中
torch.nn.Linear(input_size,hidden_size),
torch.nn.Sigmoid(),
torch.nn.Linear(hidden_size,output_size),
)
二.建立损失函数和优化器
cost=torch.nn.MSELoss()
optimizer=torch.optim.SGD(
neu.parameters(), #神经网络的各项参数,包括权重和偏置
lr=0.01 #学习率
)
三.对神经网络进行分批次的训练
#神经网络训练循环
for i in range(2000):
batch_loss=[] #记录每一批的损失
#start和end分别是提取一个batch上标和下标
for start in range(0, len[x], batch_size):
end=start+batch_size if start+batch_size<len(X) else len(X)
xx=Variable(torch.FloatTensor(X[start:end])) #一批特征属性数据
yy=Variable(torch.FloatTensor(Y[start:end])) #一批目标属性数据
predict=neu(xx) #模型预测
loss=cost(predict,yy)
optimizer.zero_grad() #将优化器存储的哪些参数的梯度设置为0
loss.backward() #开始反向传播计算所有梯度值
optimizer.step() #优化器开始运行一步更新所有的参数
batch_loss.append(loss.data.numpy())
#每隔100步输出一下损失值(loss)
if i%100==0:
losses.append(np.mean(batch_loss))
print(i,np.mean(batch_loss))