Un conjunto de herramientas útiles que uso en mis bases de código.
Para instalar:
git clone [email protected]:Shamdan17/skit.git
pip install -e .
DataSetPreloader es un envoltorio alrededor de torch.utils.data.Dataset que almacena el conjunto de datos al disco. Esto se realiza en instanciación o perezosamente cuando se solicita un lote. Esto es para evitar la sobrecarga de la carga desde el disco cada vez, especialmente si se carga una sola instancia de varios archivos. Más importante aún, esto nos permite omitir los pasos de preprocesamiento posiblemente caros al hacerlo solo una vez.
ADVERTENCIA: Actualmente solo admite conjuntos de datos que devuelven un dict o una tupla de tensores.
Uso:
from skit . data import DatasetPreloader
dataset = myTorchDataset ()
cache_path = 'path/to/cache'
# Wrap the dataset
dataset = DatasetPreloader (
dataset ,
cache_path = cache_path ,
wipe_cache = False , # If the cache exists, use it. Otherwise, create it. If true, delete the cache if it exists.
lazy_loading = True , # Load the entire dataset into memory on instantiation or lazily when a batch is requested
compress = True , # Compress the cache. This can save a lot of disk space. However, it can be slower to load.
block_size = 2000 , # The number of samples to store in a single folder. This is to avoid having too many files in a single directory, which can cause performance issues. Set to 0 to disable.
preloading_workers = 10 , # The number of workers to use when preloading the dataset. Does not affect lazy loading.
samples_to_confirm_cache = 100 # The number of samples to check when confirming the cache. If your dataset has many instances, increase the number of samples to confirm the cache. Please note this process is only a heuristic and is not 100% accurate. If in doubt, wipe the cache.
)
# Access the dataset as normalInMemoryDataSetPreloader es un envoltorio sobre DataSetPreloader que carga todo el conjunto de datos en la memoria. Esto es útil si tiene un pequeño conjunto de datos y desea evitar la sobrecarga de la carga desde el disco cada vez. Tiene exactamente la misma API que DataSETPRELOADER.