我使用张量进行转换,然后将其保存在列表中。稍后,我将使用它作为数据集Dataset
,最后DataLoader
训练我的模型。为此,我可以简单地使用:
l = [tensor1, tensor2, tensor3,...]
dataset = Dataset.TensorDataset(l)
dataloader = DataLoader(dataset)
Run Code Online (Sandbox Code Playgroud)
我想知道这样做的最佳实践是什么,以避免 RAM 溢出(如果大小增长)l
?类似的事情Iterator
可以避免吗?
保存张量
for idx, tensor in enumerate(dataloader0):
torch.save(tensor, f"{my_folder}/tensor{idx}.pt")
Run Code Online (Sandbox Code Playgroud)
创建数据集
class FolderDataset(Dataset):
def __init__(self, folder):
self.files = os.listdir(folder)
self.folder = folder
def __len__(self):
return len(self.files)
def __getitem__(self, idx):
return torch.load(f"{self.folder}/{self.files[idx]}")
Run Code Online (Sandbox Code Playgroud)
然后你可以实现你自己的数据加载器。如果无法将整个数据集保存在内存中,则需要加载一些文件系统。
归档时间: |
|
查看次数: |
7425 次 |
最近记录: |