PyTorch线性回归和逻辑回归实战示例

  

  

使用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线性回归和逻辑回归实战示例">

  

下面为乙状结肠函数:
  

  

 PyTorch线性回归和逻辑回归实战示例“> <br/>
  </p>
  <p>在逻辑回归中,我们预测如果当输出大于0.5时,y=1,否则y=0。</p>
  <p>损失函数一般采用交叉熵损失:<br/>
  </p>
  <p> <img src=

        #日期: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线性回归和逻辑回归实战示例">

  

更深的网络:
  

  

 PyTorch线性回归和逻辑回归实战示例

  

采用下面数据集(下载地址:https://github.com/hunkim/PyTorchZeroToAll/tree/master/data)
  

  

 PyTorch线性回归和逻辑回归实战示例“> <br/>
  </p>
  <p>输入维度为八。</p>
  
  <pre类=   #作者: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.6712161302566528

PyTorch线性回归和逻辑回归实战示例