• 笔记5:TensorDataset、DataLoader及数据集划分


    TensorDataset

    导入相关包

    from torch.utils.data import TensorDataset
    

    特征与标签合并

    HRdataset = TensorDataset(X, Y)
    

    模型训练

    for epoch in range(epochs):
        for i in range(num_batch):
            x, y = HRdataset[i * batch_size: i * batch_size + batch_size]
            y_pred = model(x)
            loss = loss_func(y_pred, y)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
        with torch.no_grad():
            print('epoch: ', epoch, 'loss: ', loss_func(model(X), Y).data.item())
    

    DataLoader

    导入相关包

    from torch.utils.data import DataLoader
    

    加载数据

    HR_ds = TensorDataset(X, Y)
    HR_dl = DataLoader(HR_ds, batch_size = batch_size, shuffle = True)
    

    模型训练

    for epoch in range(epochs):
        for x, y in HR_dl:
            y_pred = model(x)
            loss = loss_func(y_pred, y)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
        with torch.no_grad():
            print('epoch: ', epoch, 'loss: ', loss_func(model(X), Y).data.item())
    

    划分数据集

    导入相关包

    from sklearn.model_selection import train_test_split
    

    划分数据集

    train_x, test_x, train_y, test_y = train_test_split(X_data, Y_data)
    
    • 默认3:1

    包装数据

    train_x = torch.from_numpy(train_x).type(torch.float32)
    test_x = torch.from_numpy(test_x).type(torch.float32)
    train_y = torch.from_numpy(train_y).type(torch.float32)
    test_y = torch.from_numpy(test_y).type(torch.float32)
    
    train_ds = TensorDataset(train_x, train_y)
    train_dl = DataLoader(train_ds, batch_size = batch_size, shuffle = True)
    test_ds = TensorDataset(test_x, test_y)
    test_dl = DataLoader(test_ds, batch_size = batch_size)
    

    定义准确率

    def accuracy(y_pred, y_true):
        return ((y_pred.data.numpy() > 0.5).astype('int') == y_true.numpy()).mean()
    

    模型训练

    for epoch in range(epochs):
        for x, y in train_dl:
            y_pred = model(x)
            loss = loss_func(y_pred, y)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()
        with torch.no_grad():
            epoch_accuracy = accuracy(model(train_x), train_y)
            epoch_loss = loss_func(model(train_x), train_y).data
            epoch_test_accuracy = accuracy(model(test_x), test_y)
            epoch_test_loss = loss_func(model(test_x), test_y).data
            print('epoch: ', epoch, 'loss: ', round(epoch_loss.item(), 3), 'accuracy: ', round(epoch_accuracy.item(), 3),
                  'test_loss: ', round(epoch_test_loss.item(), 3), 'test_accuracy: ', round(epoch_test_accuracy.item(), 3))
    
  • 相关阅读:
    【安全运维】在Windows平台利用sysmon进行安全分析
    【渗透测试】利用分块传输绕安全狗
    【渗透测试】如何获取目标网站真实IP
    【渗透测试】渗透测试常用在线工具
    【读书笔记】《互联网企业安全建设高级指南》6-17
    【安全运维】linux安全加固项目
    【安全运维】初识osquery
    【渗透测试】使用隧道模式访问目标数据库
    【企业安全】使用文件hash进行威胁分析
    【编程开发】python学习-判断是否是私网IP地址
  • 原文地址:https://www.cnblogs.com/miraclepbc/p/14333299.html
Copyright © 2020-2023  润新知