多参数多个权重
输入维度是8的线性层,输出维度是1线性层
import numpy as np
import torch
##准备数据
xy = np.loadtxt('diabetes.csv.gz',delimiter=',',dtype=np.float32)
x_data = torch.from_numpy(xy[:,:-1])
y_data = torch.from_numpy(xy[:, [-1]])
##构造神经网络
class Model(torch.nn.Module):
def __init__(self):
super(Model,self).__init__()
self.linear1=torch.nn.linear(8, 6)
self.linear2=torch.nn.linear(6, 4)
self,linear3=torch.nn.linear(4, 1)
self.sigmoid=torch.nn.Sigmoid()
def forward(self, x):
x = self.sigmoid(self.linear1(x))
x = self.sigmoid(self.linear2(x))
x = self.sigmoid(self.linear3(x))
return x
model = Model()
##准备损失函数和优化器
criterion = torch.nn.BCELoss(size_average=True) ##二分类交叉熵损失函数
optimizer = torch.optim.SGD(model.parameters(), lr=0.1)
##开始建立训练
for epoch in range(1000):
y_pred=model(x_data)
loss = criterion(y_pred,y_data) ##计算loss损失
optimizer.zero_grad() ##梯度清零
loss.backward() ##梯度反向传播,说白了就是获得最终损失值对w参数的求导
optimizer.step() ##更新权重w