P7_处理多维特征的输入 import matplotlib.pyplot as plt import numpy as np import torch import os os.environ["KMP_DUPLICATE_LIB_OK"]="True" # prepare dataset xy = np.loadtxt('X.csv', delimiter=' ', dtype= np.float32) x_data = torch.from_numpy(xy[:,:-1]) # 第一个":"是指提取所有行,第二个”:-1“是指提取到倒数第二列(不取-1) y_data = torch.from_numpy(xy[:,[-1]]) # [-1]得到矩阵 # design Model using class class Model(torch.nn.Module): def __init__(self): super(Model, self).__init__() self.linear1 = torch.nn.Linear(9, 6) # 输入数据x特征是9维,x有9个特征 self.linear2 = torch.nn.Linear(6, 4) self.linear3 = torch.nn.Linear(4, 1) self.activate = torch.nn.ReLU() self.sigmoid = torch.nn.Sigmoid() # 将其看作网络的一层,而不是简单的函数使用 def forward(self, x): x = self.activate(self.linear1(x)) x = self.activate(self.linear2(x)) x = self.sigmoid(self.linear3(x)) # 前两个激活函数为Relu,为避免计算出ln0,第三个激活函数设置为sigmoid return x model = Model() # construct loss and optimizer # criterion = torch.nn.BCELoss(size_average = True) criterion = torch.nn.BCELoss(reduction="mean") optimizer = torch.optim.SGD(model.parameters(), lr=0.1) epoch_list = [] loss_list = [] # training cycle forward, backward, Update for epoch in range(100): y_pred = model(x_data) loss = criterion(y_pred, y_data) print(epoch, loss.item()) epoch_list.append(epoch) loss_list.append(loss.item()) # Backward optimizer.zero_grad() loss.backward() # Updata optimizer.step() plt.plot(epoch_list, loss_list) plt.xlabel('Epoch') plt.ylabel('Loss') plt.show()
刘二老师Pytorch第七讲:多维度输入
于 2024-08-16 00:13:04 首次发布