Pytorch: 1x1 рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде CUDA Conv2d рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЬрдире░ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pytorch/pytorch

1x1 рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде Conv2d GPU рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ CPU рдкрд░ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

net = nn.Conv2d(1, 6, kernel_size=(1,1))
net.cuda()
x = Variable(torch.randn(1, 1, 100, 100))
x.cuda()
net(x)

рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢:

TypeError: FloatSpatialConvolutionMM_updateOutput received an invalid combination of arguments - got (int, torch.FloatTensor, torch.FloatTensor, torch.cuda.FloatTensor, torch.cuda.FloatTensor, torch.FloatTensor, torch.FloatTensor, int, int, int, int, int, int), but expected (int state, torch.FloatTensor input, torch.FloatTensor output, torch.FloatTensor weight, [torch.FloatTensor bias or None], torch.FloatTensor finput, torch.FloatTensor fgradInput, int kW, int kH, int dW, int dH, int padW, int padH)

рдореИрдВрдиреЗ torch.backends.cudnn.enabled = False рд╕рд╛рде рдХреБрдбрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдорд┐рд▓рд╛ред

рдореИрдВ Ubuntu 14.04, Cuda 7.5, Cudnn 5.1.5, Python 3.5.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ Pytorch рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

x = Variable(torch.randn(1, 1, 100, 100))
x.cuda()  # This creates a copy on the GPU and immediately discards it. "x" is still on the CPU

рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

x = Variable(torch.randn(1, 1, 100, 100).cuda())

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрджрд┐ рдЖрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреБрдЫ рдЯреЗрдВрд╕рд░ torch.cuda.FloatTensor s рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп torch.FloatTensor s рд╣реИрдВред рдЖрдк рд╢рд╛рдпрдж GPU рдХреЛ рдЗрдирдкреБрдЯ рднреЗрдЬрдирд╛ рднреВрд▓ рдЧрдП рд╣реИрдВред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

x = Variable(torch.randn(1, 1, 100, 100))
x.cuda()  # This creates a copy on the GPU and immediately discards it. "x" is still on the CPU

рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

x = Variable(torch.randn(1, 1, 100, 100).cuda())

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП model.cuda() рдФрд░ x.cuda() рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

kuangliu picture kuangliu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

miguelvr picture miguelvr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mishraswapnil picture mishraswapnil  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Coderx7 picture Coderx7  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

keskarnitish picture keskarnitish  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ