首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPU没有在CPU上加速

GPU没有在CPU上加速
EN

Stack Overflow用户
提问于 2021-02-09 12:26:28
回答 1查看 96关注 0票数 0

我正在训练一个具有100*100个隐藏节点,4个输入/1个输出,批处理大小为32的神经网络,并且我没有看到使用GPU与CPU相比的速度提高。我只有一个有限的数据集(1067个样本,一开始都复制到GPU ),但我会认为33个批次可以并行运行,超过了复制到GPU所需的时间。我的数据集是否太小,或者可能存在其他问题?下面是我的代码片段:

代码语言:javascript
复制
def train_for_regression(X, T):
    BATCH_SIZE = 32
    n_epochs = 1000
    learning_rate = 0.01
    device = torch.device("cuda:0")
    Xt = torch.from_numpy(X).float().to(device) #Training inputs are 4 * 1067 samples
    Tt = torch.from_numpy(T).float().to(device) #Training outputs are 1 * 1067 samples
    
    nnet = torch.nn.Sequential(torch.nn.Linear(4, 100), 
                               torch.nn.Tanh(), 
                               torch.nn.Linear(100, 100), 
                               torch.nn.Tanh(),
                               torch.nn.Linear(100, 1))
    nnet.to(device)
    mse_f = torch.nn.MSELoss()
    optimizer = torch.optim.Adam(nnet.parameters(), lr=learning_rate)

    for epoch in range(n_epochs):
        for i in range(0, len(Xt), BATCH_SIZE):
            batch_Xt = Xt[i:i+BATCH_SIZE,:]
            batch_Tt = Tt[i:i+BATCH_SIZE,:]
            optimizer.zero_grad()
            Y = nnet(batch_Xt)
            mse = mse_f(Y, batch_Tt)
            mse.backward()
            optimizer.step()
    return nnet
EN

回答 1

Stack Overflow用户

发布于 2021-02-09 16:01:39

数据到达GPU所需的时间可能会抵消GPU带来的好处。在这种情况下,网络的大小看起来很小,CPU应该足够高效,GPU的加速也不应该那么大。

此外,GPU通常用于并行的矩阵计算,或者在这种情况下-单个批次的数据乘以网络的权重。所以批处理不应该并行处理,除非你采取额外的步骤,比如使用额外的库和/或GPU。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66112977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档