import torch
from torch.autograd import Variable
a = Variable(torch.Tensor([1, 2]))
if torch.cuda.is_available():
b = a.cuda()
b_data = b.data
b_grad = b.grad
b_grad_data = b.grad.data
рдпрджрд┐ .data
рдФрд░ .grad
рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ, рддреЛ .cuda()
рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреЛрдИ b = a.cuda
рдХрд░ рд╕рдХреЗред рдореИрдВ рдпрд╣ рд╕реЛрдЪрдХрд░ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рд╕реНрдерд┐рд░рддрд╛ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ .cuda()
, .data
рдФрд░ .grad
torch.Tensor
рд╣реИрдВ рдЗрд╕рд▓рд┐рдП cuda() рдХреЛ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ . рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, GPU рдХреЗ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдХреЛ model.cuda
рджреНрд╡рд╛рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
cuda
рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реАрдкреАрдпреВ рд╕реЗ рдЬреАрдкреАрдпреВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЬрдмрдХрд┐ grad
рдФрд░ data
рд╕рд╕реНрддреЗ рдСрдкрд░реЗрд╢рди ( O(1)
) рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЗрдВрд╕рд░ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ cuda
рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдирд╛ рдЙрдЪрд┐рдд рд╣реИред
.cuda() CPU рдбреЗрдЯрд╛ рдХреЛ GPU рдореЗрдВ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╢рд╛рдпрдж рд╣рд░ рд╕рдордп рдбреЗрдЯрд╛ рдХреЛ GPU рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ GPU рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред
рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рджреЛрдиреЛрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, .cuda
рдХреЛ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдирд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИред .cuda()
рд╕рдВрджрд░реНрдн рджреЗрддреЗ рд╕рдордп рд╣рдо рдирдИ рд╡рд╕реНрддреБрдПрдВ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
cuda
рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╣рдВрдЧрд╛ рдСрдкрд░реЗрд╢рди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реАрдкреАрдпреВ рд╕реЗ рдЬреАрдкреАрдпреВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЙрдкреА рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЬрдмрдХрд┐grad
рдФрд░data
рд╕рд╕реНрддреЗ рдСрдкрд░реЗрд╢рди (O(1)
) рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рдЯреЗрдВрд╕рд░ рдХреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐cuda
рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдирд╛ рдЙрдЪрд┐рдд рд╣реИред