Python 如何限制Torch中的Tensor.to()造成的性能开销?

Python 如何限制Torch中的Tensor.to()造成的性能开销?,python,performance,neural-network,pytorch,Python,Performance,Neural Network,Pytorch,我正在开发一个基于和框架的实时目标跟踪网络。我正在模拟一个恒定的输入数据流,以1的批大小运行它。据我所知,我注意到由于不断使用.to()Torch方法而导致的速度大大减慢,而我无法控制该方法 什么技术可以用来限制从CPU到GPU的数据传输所造成的开销 以下是Pycharm的简介,重点介绍了重要链接: 以及与.to()之前的最后一个框对应的代码: 以及加载图像并运行跟踪的主循环: from torch.utils.data import DataLoader from tqdm import t

我正在开发一个基于和框架的实时目标跟踪网络。我正在模拟一个恒定的输入数据流,以1的批大小运行它。据我所知,我注意到由于不断使用.to()Torch方法而导致的速度大大减慢,而我无法控制该方法

什么技术可以用来限制从CPU到GPU的数据传输所造成的开销

以下是Pycharm的简介,重点介绍了重要链接:

以及与.to()之前的最后一个框对应的代码:

以及加载图像并运行跟踪的主循环:

from torch.utils.data import DataLoader
from tqdm import tqdm

data_loader = DataLoader(seq, batch_size=1, shuffle=False)
for i, frame in enumerate(tqdm(data_loader)):
    if len(seq) * tracktor['frame_split'][0] <= i <= len(seq) * tracktor['frame_split'][1]:
        with torch.no_grad():
            tracker.step(frame)
        num_frames += 1
来自torch.utils.data导入数据加载器
从TQM导入TQM
数据加载器=数据加载器(顺序,批量大小=1,随机播放=False)
对于i,枚举中的帧(tqdm(数据加载器)):
如果len(seq)*跟踪器['frame_split'][0]
from torch.utils.data import DataLoader
from tqdm import tqdm

data_loader = DataLoader(seq, batch_size=1, shuffle=False)
for i, frame in enumerate(tqdm(data_loader)):
    if len(seq) * tracktor['frame_split'][0] <= i <= len(seq) * tracktor['frame_split'][1]:
        with torch.no_grad():
            tracker.step(frame)
        num_frames += 1