python - Pytorch DataLoder 非常慢
问题描述
我对 Pytorch 的 DataLoader 有问题,因为它非常慢。
我做了一个测试来证明这一点,这里是代码:
data = np.load('slices.npy')
data = np.reshape(data, (-1, 1225))
data = torch.FloatTensor(data).to('cuda')
print(data.shape)
# ==> torch.Size([273468, 1225])
class UnlabeledTensorDataset(TensorDataset):
def __init__(self, data_tensor):
self.data_tensor = data_tensor
self.samples = data_tensor.shape[0]
def __getitem__(self, index):
return self.data_tensor[index]
def __len__(self):
return self.samples
test_set = UnlabeledTensorDataset(data)
test_loader = DataLoader(test_set, batch_size=data.shape[0])
start = datetime.datetime.now()
with torch.no_grad():
for batch in test_loader:
print(batch.shape) # ==> torch.Size([273468, 1225])
y_pred = model(batch)
loss = torch.sqrt(criterion(y_pred, batch))
avg_loss = loss
print(round((datetime.datetime.now() - start).total_seconds() * 1000, 2))
# ==> 1527.57 (milliseconds) !!!!!!!!!!!!!!!!!!!!!!!!
start = datetime.datetime.now()
with torch.no_grad():
print(data.shape) # ==> torch.Size([273468, 1225])
y_pred = model(data)
loss = torch.sqrt(criterion(y_pred, data))
avg_loss = loss
print(round((datetime.datetime.now() - start).total_seconds() * 1000, 2))
# ==> 2.0 (milliseconds) !!!!!!!!!!!!!!!!!!!!!!!!
我想使用 DataLoader 但我想要一种方法来解决这个缓慢的问题,有人知道为什么会这样吗?
解决方案
时差对我来说似乎是合乎逻辑的:
一方面,您正在循环
test_loader
并进行1225
推理。另一方面,你正在做一个单一的推理。
推荐阅读
- java - 如何动态摆脱 Maven 项目中的 xml-apis 库?
- reactjs - 在 React 要求 npm 更新后无法 npm install -g npm@7.6.2
- django - Django 通用视图(搜索和发布表单)
- excel - 如何更改 Variant excel VBA 上的字体颜色?
- java - 使用 Vaadin 视图进行 Spring 注入
- python - 将 .py 文件转换为可执行文件后出现“无法执行脚本错误”
- javascript - Javascript toLocalDateString 在 windows 和 mac 上输出不同的格式
- jmeter - 它的负载是多少?
- firebase - 为什么 Firebase Cloud Function 部署后会比在模拟器中慢得多,除了冷启动?
- c# - 如果某事为真,我如何执行代码,无限期地继续执行代码,但停止评估 if 语句?