【发布时间】:2021-06-05 22:09:23
【问题描述】:
我一直在对 2 万张“图像”进行神经网络分析,每张图像以 100 * 100 * 100 个神经元的强度形式表示。
x = np.loadtxt('imgfile')
x = x.reshape(-1, img_channels, 100, 100, 100)
//similarly for target variable 'y'
在上面,x 的第一个维度将是图像的数量。我正在使用 DataLoader 在每次迭代期间获取适当数量的图像进行训练,如下所示。
batch_size = 16
traindataset = TensorDataset(Tensor(x[:-testdatasize]), Tensor(y[:-testdatasize]) )
train_loader = DataLoader(dataset=traindataset, batch_size=batch_size, shuffle=True)
for epoch in range(num_epochs):
for i, (data,targets) in enumerate(train_loader):
...
我希望将图像数量增加到 50k,但受到计算机内存的限制(imgfile 约为 50 GB)。
我想知道是否有一种有效的方法来处理所有数据?比如,不是加载整个 imgfile,我们可以先将它们分成集合,每个集合有 batch_size 个图像,并在训练期间定期加载集合。我不完全确定如何实现这一点。
我在这里使用 Keras 发现了一些类似的想法:https://machinelearningmastery.com/how-to-load-large-datasets-from-directories-for-deep-learning-with-keras/
请指出任何使用 pytorch 实现的类似想法,或者您有任何想法。
【问题讨论】:
标签: python machine-learning deep-learning pytorch resnet