PyTorch处理多维特征的输入

1.代码 

import numpy as np
import torch
import matplotlib.pyplot as plt
import torch.nn.functional as F

#1.prepare dataset
xy=np.loadtxt('E:\深度学习\PyTorch深度学习实践\diabetes.csv.gz',delimiter=',',dtype=np.float32)
x_data=torch.from_numpy(xy[:,:-1])
y_data=torch.from_numpy(xy[:,[-1]])

#2.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.activate=torch.nn.ReLU()   #无参数

    def forward(self,x):
        x=self.activate(self.linear1(x))
        x=self.activate(self.linear2(x))
        x=F.sigmoid(self.linear3(x))
        return x

model=Model()

#3.construct loss and optimizer
criterion=torch.nn.BCELoss(size_average=True)
optimizer=torch.optim.SGD(model.parameters(),lr=0.1)

epoch_list=[epoch for epoch in range(1000)]
loss_list=[]

#4.training cycle
for epoch in range(1000):
    #forward
    y_pred=model(x_data)
    loss=criterion(y_pred,y_data)
    loss_list.append(loss.item())
    print(epoch,'loss=',loss.item())

    #backward
    optimizer.zero_grad()
    loss.backward()

    #update
    optimizer.step()

plt.plot(epoch_list,loss_list)
plt.xlabel('epoch')
plt.ylabel('loss')
plt.show()

2.运行结果

2.1 激活函数为ReLU

2.1.1 优化器为SGD

PyTorch处理多维特征的输入_第1张图片

2.1.2优化器为Adam

PyTorch处理多维特征的输入_第2张图片

2.2 激活函数为Sigmoid

2.2.1 优化器为SGD

PyTorch处理多维特征的输入_第3张图片

2.2.2 优化器为Adam

PyTorch处理多维特征的输入_第4张图片

你可能感兴趣的:(PyTorch)