3.5 批训练数据

文章目录

import torch
import torch.utils.data as Data

torch.manual_seed(1)    # reproducible

BATCH_SIZE = 5
# BATCH_SIZE = 8

x = torch.linspace(1, 10, 10)       # this is x data (torch tensor)
y = torch.linspace(10, 1, 10)       # this is y data (torch tensor)

#  先转换成 torch 能识别的 Dataset
torch_dataset = Data.TensorDataset(x, y)
loader = Data.DataLoader(
    dataset=torch_dataset,      # torch TensorDataset format
    batch_size=BATCH_SIZE,      # mini batch size
    shuffle=True,               # 要不要打乱数据 (打乱比较好)
    num_workers=2,              # 多线程来读数据
)


def show_batch():
    for epoch in range(3):   # train entire dataset 3 times
        # enumerate是按序枚举列表,并添加序号
        for step, (batch_x, batch_y) in enumerate(loader):  # for each training step
            # train your data...
            print('Epoch: ', epoch, '| Step: ', step, '| batch x: ',
                  batch_x.numpy(), '| batch y: ', batch_y.numpy())

if __name__ == '__main__':
    show_batch()

在这里插入图片描述

假设你的拥堵指数数据是一个包含 $N$ 个样本的列表,每个样本包含 $M$ 个时间点的拥堵指数。你可以将每个样本看作一个长度为 $M$ 的向量,将整个数据集看作一个 $N \times M$ 的矩阵。你可以使用 NumPy 库来将数据转换为张量格式,并使用 PyTorch 进行模型训练。 以下是一个将拥堵指数数据转换为张量格式并进行模型训练的示例代码: ```python import numpy as np import torch from torch.utils.data import DataLoader, TensorDataset # 假设你的拥堵指数数据是一个包含 N 个样本的列表 data = [ [1.2, 1.3, 1.5, 1.8], [2.1, 2.3, 2.4, 2.2], [3.2, 3.1, 3.5, 3.3], ... ] # 将数据转换为张量格式 data = np.array(data) data_tensor = torch.from_numpy(data) # 将数据封装成 TensorDataset 类型 dataset = TensorDataset(data_tensor) # 创建一个数据加载器,量加载数据 batch_size = 32 dataloader = DataLoader(dataset, batch_size=batch_size) # 定义模型,如下是一个简单的回归模型示例 class MyModel(torch.nn.Module): def __init__(self): super(MyModel, self).__init__() self.fc1 = torch.nn.Linear(4, 32) self.fc2 = torch.nn.Linear(32, 1) def forward(self, input_data): x = torch.relu(self.fc1(input_data)) x = self.fc2(x) return x model = MyModel() # 定义损失函数和优化器 criterion = torch.nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) # 开始训练 num_epochs = 10 for epoch in range(num_epochs): for batch in dataloader: optimizer.zero_grad() input_data = batch[0] output_data = model(input_data) loss = criterion(output_data, input_data) loss.backward() optimizer.step() print("Epoch {} loss:{}".format(epoch, loss)) ``` 请注意,这只是一个示例代码,实际上每个任务和数据集都有其特定的数据预处理和模型定义方法。此外,如果你想使用预先训练好的模型(如BERT或GPT-2),你需要使用相应的预处理方法来处理输入数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值