使用PyTorch定义线性回归模型一般分以下几步:
1。设计网络架构
2 .构建损失函数(损失)和优化器(优化)
3 .训练(包括前馈(向前),反向传播(向后),更新模型参数(更新))
#作者:yuquanle #数据:2018.2.5 #研究LinearRegression PyTorch使用 进口火炬 从火炬。autograd导入变量 #训练数据 x_data=https://www.yisu.com/zixun/Variable (torch.Tensor ([[1.0], [2.0], [3.0]])) y_data=变量(torch.Tensor ([[2.0], [4.0], [6.0]])) 类模型(torch.nn.Module): def __init__(自我): 超级(模型、自我). __init__ () 自我。线性=torch.nn。线性(1,1)# alt=" PyTorch线性回归和逻辑回归实战示例">下面为乙状结肠函数:
#日期:2018.2.6 # LogisticRegression 进口火炬 从火炬。autograd导入变量 x_data=https://www.yisu.com/zixun/Variable (torch.Tensor ([[0.6], [1.0], [3.5], [4.0]])) y_data=变量(torch.Tensor ([[0。]、[0。[1]。],[1]])) 类模型(torch.nn.Module): def __init__(自我): 超级(模型、自我). __init__ () 自我。线性=torch.nn。线性(1,1)# alt=" PyTorch线性回归和逻辑回归实战示例">更深的网络:
采用下面数据集(下载地址:https://github.com/hunkim/PyTorchZeroToAll/tree/master/data)
#作者:yuquanle #日期:2018.2.7 #深和宽 进口火炬 从火炬。autograd导入变量 进口numpy np xy=np.loadtxt(’。/数据/糖尿病。csv,分隔符=',',dtype=np.float32) x_data=https://www.yisu.com/zixun/Variable (torch.from_numpy (xy (:, 0: 1))) y_data=变量(torch.from_numpy (xy [: [1]])) #打印(x_data.data.shape) #打印(y_data.data.shape) 类模型(torch.nn.Module): def __init__(自我): 超级(模型、自我). __init__ () 自我。l1=torch.nn。线性(8、6) 自我。l2=torch.nn。线性(4) 自我。l3=torch.nn。线性(4,1) 自我。乙状结肠=torch.nn.Sigmoid () def向前(自我,x): x=self.sigmoid (self.l1 (x)) x=self.sigmoid (self.l2 (x)) y_pred=self.sigmoid (self.l3 (x)) 返回y_pred #我们的模型 模型=() cirterion=torch.nn.BCELoss (size_average=True) 优化器=torch.optim.SGD (model.parameters (), lr=0.001) hour_var=变量(torch.Tensor ([[-0.294118, 0.487437, 0.180328, -0.292929, 0, 0.00149028, -0.53117, -0.0333333)))) 打印(“(培训之前)”model.forward (hour_var) . data [0] [0]) #循环培训 时代的范围(1000): y_pred=模型(x_data) # y_pred, y_data不能写反(因为损失函数为交叉熵损失) 损失=cirterion (y_pred y_data) optimizer.zero_grad () loss.backward () optimizer.step () 如果时代% 50==0: 打印(时代,loss.data [0]) #训练后 hour_var=变量(torch.Tensor ([[-0.294118, 0.487437, 0.180328, -0.292929, 0, 0.00149028, -0.53117, -0.0333333)))) 打印(“预测(训练后)”model.forward (hour_var) . data [0] [0]) >之前
结果:
0.5091859698295593(培训之前)
0.6876295208930969 0
50 0.6857835650444031
100年0.6840178370475769
150年0.6823290586471558
200年0.6807141900062561
250年0.6791688203811646
300年0.6776910424232483
350年0.6762782335281372
400年0.6749269366264343
450年0.6736343502998352
500年0.6723981499671936
550年0.6712161302566528PyTorch线性回归和逻辑回归实战示例