if (FALSE) {
# Example how to use it combined with mask generators with paired sampling activated
batch_size <- 4
if (batch_size %% 2 == 1) batch_size <- batch_size - 1 # Make sure that batch size is even
n_features <- 3
n_observations <- 5
shuffle <- TRUE
data <- torch_tensor(matrix(rep(seq(n_observations), each = n_features),
ncol = n_features, byrow = TRUE
))
data
dataset <- vaeac_dataset(data, rep(1, n_features))
dataload <- torch::dataloader(dataset,
batch_size = batch_size,
sampler = paired_sampler(dataset,
shuffle = shuffle
)
)
dataload$.length() # Number of batches, same as ceiling((2 * n_observations) / batch_size)
mask_generator <- mcar_mask_generator(paired = TRUE)
coro::loop(for (batch in dataload) {
mask <- mask_generator(batch)
obs <- mask * batch
print(torch::torch_cat(c(batch, mask, obs), -1))
})
}
Run the code above in your browser using DataLab