2、tensor數據的運算、numpy與Tensor互轉、Tensor轉cuda


原位操作(in-place),帶“_”尾巴的都是原位操作,如x.add_(y) ,x被改變。

1、加法

import torch as t
x=t.Tensor([[10,11],[20,21]]) #Tensor得到的是浮點型
#x=t.tensor([[10,11],[20,21]],dtype=float) #必須指定為浮點型,否則與元素同類型
y=t.rand_like(x) #若x不是浮點型,報錯
y
#加法
x+y #方式一
t.add(x,y) #方式二
x.add(y) #方式三
z=t.empty(2,2) t.add(x,y,out=z) #方式四,先分配z的空間再賦值 z

numpy與Tensor互轉,共享內存,其一改變,都變。

import torch as t
a=t.ones(2) #默認浮點型
b=a.numpy() #Tensor→numpy
b
a.add_(1) #a、b的元素都變為2.
b
import numpy as nu
a=nu.ones(2) #默認浮點型
b=t.from_numpy(a) #numpy→Tensor
b

Tensor轉cuda(GPU運算)

import torch as t
x=t.Tensor([[10,11],[20,21]]) #Tensor得到的是浮點型
y=t.Tensor([[10,11],[20,21]]) #Tensor得到的是浮點型
if t.cuda.is_available(): #gpu上運算,如果不支持,代碼塊不執行
    x=x.cuda() #轉cuda
    y=y.cuda()
    z=x+y
    print(z) #還在GPU里
    print(z.to("cpu")) #轉到cpu展示

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM