gpt4 book ai didi

autoencoder - Pytorch中如何简化DataLoader for Autoencoder

转载 作者:行者123 更新时间:2023-12-04 03:05:20 25 4
gpt4 key购买 nike

有没有更简单的方法来设置数据加载器,因为在自动编码器的情况下输入和目标数据是相同的,并且在训练期间加载数据? 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)

最佳答案

为什么不对 TensorDataset 进行子类化以使其与未标记数据兼容?

class UnlabeledTensorDataset(TensorDataset):
"""Dataset wrapping unlabeled data tensors.

Each sample will be retrieved by indexing tensors along the first
dimension.

Arguments:
data_tensor (Tensor): contains sample data.
"""
def __init__(self, data_tensor):
self.data_tensor = data_tensor

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

沿着这些思路训练你的自动编码器

X_train     = rnd.random((300,100))
train = UnlabeledTensorDataset(torch.from_numpy(X_train).float())
train_loader= data_utils.DataLoader(train, batch_size=1)

for epoch in range(50):
for batch in train_loader:
data = Variable(batch)
optimizer.zero_grad()
output = model(data)
loss = criterion(output, data)

关于autoencoder - Pytorch中如何简化DataLoader for Autoencoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45099554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com