Pytorch深度学习实践第八讲 加载数据集

B站 刘二大人 传送门 加载数据集

	本节用的还是糖尿病数据集,老师放的百度云课件中有数据集压缩包,自行下载。
	这一节把数据加载做成了类,并且增加了批量处理。代码中有一些测试和绘图后注释掉的内容,这里就不删除了。
	链接:https://pan.baidu.com/s/1vZ27gKp8Pl-qICn_p2PaSw
	提取码:cxe4
import torch
from  torch.utils.data import Dataset
from  torch.utils.data import DataLoader
import numpy as np
import matplotlib.pyplot as plt

class DiabetesDataset(Dataset):
    def __init__(self,filepath):
        xy = np.loadtxt(filepath, delimiter=',', dtype=np.float32)  # 'delimiter'为分隔符
        print('xy = \n', xy.shape)
        self.len = xy.shape[0]
        self.x_data = torch.from_numpy(xy[:, :-1])
        self.y_data = torch.from_numpy(xy[:, [-1]])

    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index]

    def __len__(self):
        return self.len

dataset = DiabetesDataset('diabetes.csv.gz')#读数据集
train_loader = DataLoader(dataset=dataset,batch_size=32,shuffle=True,num_workers=2)
#将数据集分成小批量,这里num_workers参数的设置windows系统直接运行会报错,下面增加'main'可以解决。

#---设计模型
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, 3)
        self.linear3 = torch.nn.Linear(3, 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))
        return x
model = Model()
#---设计模型

#---计算损失和更新
criterion = torch.nn.BCELoss(size_average=False)
optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)
#---计算损失和更新

loss_list = []
epoch_list = []

#---训练
if __name__=='__main__':
    for epoch in range(100):
        for i, data in enumerate(train_loader, 0):
            # 1 Prepare data
            inputs, labels = data
            # 2 Forward
            y_pred = model(inputs)
            loss = criterion(y_pred, labels)
            #print(epoch, loss)

            # 3 Backward
            optimizer.zero_grad()
            loss.backward()
            # 4 Update
            optimizer.step() #更新权重

        #loss_list.append(loss)
        #epoch_list.append(epoch)  # 绘图用
#---训练

#print('w= ', model.linear1.weight)
#print('b = ',model.linear1.bias)#输出参数

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

你可能感兴趣的:(Pytorch深度学习实践,深度学习,神经网络,pytorch,python)