有没有更简单的方法来设置数据加载器,因为在自动编码器的情况下输入和目标数据是相同的,并且在训练期间加载数据? DataLoader总是需要两个输入 .
目前我定义我的dataloader像这样:
X_train = rnd.random((300,100))
X_val = rnd.random((75,100))
train = data_utils.TensorDataset(torch.from_numpy(X_train).float(), torch.from_numpy(X_train).float())
val = data_utils.TensorDataset(torch.from_numpy(X_val).float(), torch.from_numpy(X_val).float())
train_loader= data_utils.DataLoader(train, batch_size=1)
val_loader = data_utils.DataLoader(val, batch_size=1)
和火车这样:
for epoch in range(50):
for batch_idx, (data, target) in enumerate(train_loader):
data, target = Variable(data), Variable(target).detach()
optimizer.zero_grad()
output = model(data, x)
loss = criterion(output, target)
2 回答
为什么不对TensorDataset进行子类化以使其与未标记的数据兼容?
以及用于训练您的自动编码器的这些内容
我相信这很简单 . 除此之外,我猜你必须实现自己的数据集 . 示例代码如下 .
然后,您可以按如下方式使用它 .
要测试第一批,请按以下步骤操作 .
最后,您可以在批处理训练循环中枚举加载的数据,如下所示 .
玩得开心 .
PS . 我共享的代码示例因此不加载验证数据 .