參考連線
torch.tensor
是乙個多維矩陣,其中包含單個資料型別的元素,使用cpu
和gpu
及其變體定義了10種張量型別,如下所示:
data type
dtype
cpu tensor
gpu tensor
32位浮點
torch.float32 or torch.float
torch.floattensor
torch.cuda.floattensor
64位浮點
torch.float64 or torch.double
torch.doubletensor
torch.cuda.doubletensor
16位浮點1
torch.float16 or torch.half
torch.halftensor
torch.cuda.halftensor
16位浮點2
torch.bfloat16
torch.bfloat16tensor
torch.cuda.bfloat16tensor
32位複數
torch.complex32
64位複數
torch.complex64
128位複數
torch.complex128 or torch.cdouble
8位整數(無符號)
torch.uint8
torch.bytetensor
torch.cuda.bytetensor
8位整數(有符號)
torch.int8
torch.chartensor
torch.cuda.chartensor
16位整數(有符號)
torch.int16 or torch.short
torch.shorttensor
torch.cuda.shorttensor
32位整數(有符號)
torch.int32 or torch.int
torch.inttensor
torch.cuda.inttensor
64位整數(有符號)
torch.int64 or torch.long
torch.longtensor
torch.cuda.longtensor
布林型torch.bool
torch.booltensor
torch.cuda.booltensor
張量可以使用建構函式從python list或序列 torch.tensor()構造:
建立
#1
torch.tensor([[
1,-1
],[2
,0]]
)#out:
tensor([[
1,-1
],[2
,0]]
)#2 import from numpy
torch.tensor(np.array([[
1,2,
3],[
4,5,
6]])
)# or torch.from_numpy(x) x is a numpy array
#out:
tensor([[
1,2,
3],[
4,5,
6]], dtype=torch.int32)
#3torch.zeros([2
,4],dtype=torch.int32)
#out:
tensor([[
0,0,
0,0]
,[0,
0,0,
0]], dtype=torch.int32)
#4
cuda0 = torch.device(
'cuda:0'
)torch.ones([3
,4],dtype = torch.float32,device=cuda0)
#out:
tensor([[
1.,1
.,1.
,1.]
,[1.
,1.,
1.,1
.],[
1.,1
.,1.
,1.]
], device=
'cuda:0'
)
張量的內容可以使用python的索引和切片符號來訪問和修改:
x = torch.tensor([[
[1,1
,1],
[2,2
,2]]
,[[3
,4,3
],[4
,5,6
]],[
[1,2
,3],
[4,5
,6]]
])print
(x.shape)
print
(x[1,0
,2])
#out:
torch.size([3
,2,3
])tensor(
3)
torch.rand(2,
3)# 隨機產生0~1之間的數值,不包括1
#out:
tensor([[
0.9287
,0.4712
,0.6042],
[0.0397
,0.5627
,0.0685]]
)torch.randint(1,
10,[4
,4])
# (min,max,[shape])
tensor([[
9,9,
7,7]
,[9,
8,2,
9],[
6,5,
7,6]
,[7,
7,8,
6]])
# 正態分佈
torch.randn(3,
3)# n(0,1)
#out:
tensor([[
2.6556,-
0.5332
,0.2179],
[-0.9387,-
2.4031
,0.1323],
[-1.1976
,0.2214
,0.3837]]
)#指定均值方差
torch.normal(mean=torch.arange(1.
,11.)
, std=torch.arange(1,
0,-0.1))
tensor(
[1.8384
,1.3898
,3.0244
,3.6775
,4.3044
,6.5030
,7.8534
,7.8094
,9.1080
,10.0453
])
用torch.tensor.item()從張量中獲取包含單個值的python數字:
x = torch.tensor([[
[1,1
,1],
[2,2
,2]]
,[[3
,4,3
],[4
,5,6
]],[
[1,2
,3],
[4,5
,6]]
])print
(x.shape)
y = x[1,
0,2]
print
(y)print
(y.item())
#out:
torch.size([3
,2,3
])tensor(3)
3
張量型別推斷
a = torch.randn(2,
3)#1a.
type()
#out:
'torch.floattensor'
#2type
(a)#out:
torch.tensor
#3isinstance
(a,torch.floattensor)
#out:
true
pytorch基礎學習 1
剛剛接觸了tensorflow,現在對pytorch也有很大的興趣,說到底,這些機器學習庫都是工具,技多不壓身,2016年到現在也不到三年的庫,發展這麼快必然有它的道理,廢話不多,開始學習吧。包torch包含了多維張量的資料結構以及基於其上的多種數學操作。另外,它也提供了多種工具,其中一些可以有效的...
pytorch基礎學習1
1.從numpy匯入 import torch import numpy as np a np.array 2,2.3 b torch.from numpy a print a print b a np.ones 2,3 b torch.from numpy a print a print b 結果...
PyTorch學習筆記1 PyTorch介紹
pytorch是torch在python上的衍生,與tensorflow不同的是,它在搭建神經網路時不是先建立好乙個靜態圖,然後再把資料放到圖計算,而是乙個動態的過程,邊搭圖邊計算。pytorch與numpy對比 torch自稱為神經網路界的numpy,因為他能將torch產生的tensor放在gp...