1.
加载数据:
datas=np.loadtxt('diabetes.csv',delimiter=',',dtype=np.float32)
不同的激活函数:
链接
多层输入:
2.
import numpy as np
import torch
#step1:准备数据集
datas=np.loadtxt('diabetes.csv',delimiter=',',dtype=np.float32)
x_train=torch.from_numpy(datas[:,:-1])#转化为tensor
y_train=torch.from_numpy(datas[:,[-1]])
#step2:define Model
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.linear4=torch.nn.Linear(2,1)
self.sigmoid=torch.nn.Sigmoid()
self.activate=torch.nn.ReLU()
def forward(self,x):
#x=self.sigmoid(self.linear1(x))
#x=self.sigmoid(self.linear2(x))
#x=self.sigmoid(self.linear3(x))
#x=self.sigmoid(self.linear4(x))
x = self.activate(self.linear1(x))
x = self.activate(self.linear2(x))
x = self.sigmoid(self.linear3(x))#最后一个最后用sigmoid,让值在0-1之间
# x = self.sigmoid(self.linear4(x))
return x
model1=Model()
#step3: Construct Loss and Optimizer
#criterion=torch.nn.BCELoss(size_average=True)
criterion=torch.nn.BCELoss(reduction='mean')
optimizer=torch.optim.SGD(model1.parameters(),lr=0.1)
#step 4: Training Cycle
for epoch in range(100):
# Forward
y_predict=model1(x_train)
loss=criterion(y_predict,y_train)
print(epoch,loss.item())
#backward
optimizer.zero_grad()
loss.backward()
#update
optimizer.step()