pytorch - Pytorch:保存张量列表的最佳实践?
问题描述
我使用张量进行转换,然后将其保存在列表中。稍后,我将使用 将其作为数据集Dataset
,然后最终DataLoader
训练我的模型。为此,我可以简单地使用:
l = [tensor1, tensor2, tensor3,...]
dataset = Dataset.TensorDataset(l)
dataloader = DataLoader(dataset)
我想知道这样做的最佳做法是什么,以避免在大小l
增长时RAM溢出?Iterator
可以避免它吗?
解决方案
保存张量
for idx, tensor in enumerate(dataloader0):
torch.save(tensor, f"{my_folder}/tensor{idx}.pt")
创建数据集
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]}")
然后你可以实现你自己的数据加载器。如果您不能将整个数据集保存在内存中,则需要加载一些文件系统。
推荐阅读
- javascript - Chrome 商店拒绝 Chrome 扩展程序
- c++ - 如何仅在启动 dll 时执行命令?
- jenkins - find 命令在本地工作,但在 jenkins 上没有输出
- python - 使用自定义标头发出多个 GET 请求的最快方法?
- python - 有没有更奇怪的方法来生成这个虚拟数据?
- javascript - 子组件,无限重新渲染
- javascript - Bootstrap Datetimepicket:表 td 宽度大小未调整大小
- vb.net - 在 VB.net 中过滤数据
- keyboard-shortcuts - macOS 使用“命令键”作为 zsh 快捷方式
- python - 在需要一段时间才能打开的 tkinter 文件上创建加载消息