在训练PyTorch神经网络模型时是否有洗牌模式?

我正在使用下面的代码通过PyTorch训练一个简单的神经网络来学习谐波波形。但我想开启洗牌模式来改进模型。有没有相关的语法可以实现这个目标?

model = FCN(1,1,50,4)optimizer = torch.optim.Adam(model.parameters(),lr=15e-3, weight_decay=15e-3/4000)for i in range(4000):    optimizer.zero_grad()    yhh = model(x_data)    loss = torch.mean((yhh-y_data)**2)    loss.backward()    optimizer.step()

此外,我还尝试使用下面的代码随机重新排序学习集,但结果很糟糕。

yhh = model(x_data[[np.random.choice(range(len(x_data)), len(x_data), replace=False)]])

回答:

假设你的x_data是一个大小为[100]的普通Torch张量,你可以使用torch.utils.data.DataLoader并设置shuffle=True来在每个epoch后洗牌x_data

dataset = torch.utils.data.TensorDataset(x_data)  # 首先创建一个包装你的张量的数据集dataloader = torch.utils.data.DataLoader(dataset, batch_size=bs, shuffle=True)  # 指定你需要的批量大小

dataloader对象现在是一个可迭代对象,可以这样使用:

for data in dataloader:    model(data[0])  #data[0]是一个大小为(bs)的张量

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注