"""python
===================================數組
A :class:`torch.Tensor` 是包含單一元素的duo維矩陣app
Torch 定義了9種cpu類型,9種gpu類型:dom
注意區分dtype以及cpu和gpu tensor;一個時屬性操做,另外兩個是類封裝操做;ide
======================== =========================================== =========================== ================================函數
Data type dtype類型:屬性操做 CPU tensor類操做,注意進行了封裝 GPU tensor佈局
======================== =========================================== =========================== ================================ui
32-bit floating point ``torch.float32`` or ``torch.float`` :class:`torch.FloatTensor` :class:`torch.cuda.FloatTensor`spa
64-bit floating point ``torch.float64`` or ``torch.double`` :class:`torch.DoubleTensor` :class:`torch.cuda.DoubleTensor`orm
16-bit floating point ``torch.float16`` or ``torch.half`` :class:`torch.HalfTensor` :class:`torch.cuda.HalfTensor`
8-bit integer (unsigned) ``torch.uint8`` :class:`torch.ByteTensor` :class:`torch.cuda.ByteTensor`
8-bit integer (signed) ``torch.int8`` :class:`torch.CharTensor` :class:`torch.cuda.CharTensor`
16-bit integer (signed) ``torch.int16`` or ``torch.short`` :class:`torch.ShortTensor` :class:`torch.cuda.ShortTensor`
32-bit integer (signed) ``torch.int32`` or ``torch.int`` :class:`torch.IntTensor` :class:`torch.cuda.IntTensor`
64-bit integer (signed) ``torch.int64`` or ``torch.long`` :class:`torch.LongTensor` :class:`torch.cuda.LongTensor`
Boolean ``torch.bool`` :class:`torch.BoolTensor` :class:`torch.cuda.BoolTensor`
======================== =========================================== =========================== ================================
:torch.Tensor 是torch.FloatTensor的別名
A tensor can be constructed from a Python :class:`list` or sequence using the
:func:`torch.tensor` constructor:
::tensor張量能夠經過默認的python list進行構造(以下),也能夠經過torch.tensor進行構造
>>> torch.tensor([[1., -1.], [1., -1.]])
tensor([[ 1.0000, -1.0000],
[ 1.0000, -1.0000]])
>>> torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
tensor([[ 1, 2, 3],
[ 4, 5, 6]])
.. warning::
:func:`torch.tensor` 老是拷貝數據.若是隻想改變requires_grad標誌,則使用requires_grad_()或 detach()來避免拷貝;
若是您有一個numpy數組並但願避免複製,請使用 torch.as_tensor();
能夠經過將 torch.dtype和/或a torch.device傳遞給構造函數或張量建立操做來構造特定數據類型的張量
::
>>> torch.zeros([2, 4], dtype=torch.int32)
tensor([[ 0, 0, 0, 0],
[ 0, 0, 0, 0]], dtype=torch.int32)
>>> cuda0 = torch.device('cuda:0')
>>> torch.ones([2, 4], dtype=torch.float64, device=cuda0)
tensor([[ 1.0000, 1.0000, 1.0000, 1.0000],
[ 1.0000, 1.0000, 1.0000, 1.0000]], dtype=torch.float64, device='cuda:0')
張量的內容可使用Python的索引和切片符號來訪問和修改
::
>>> x = torch.tensor([[1, 2, 3], [4, 5, 6]])
>>> print(x[1][2])
tensor(6)
>>> x[0][1] = 8
>>> print(x)
tensor([[ 1, 8, 3],
[ 4, 5, 6]])
用torch.Tensor.item()從張量中獲取包含單個值的Python數字
::
>>> x = torch.tensor([[1]])
>>> x
tensor([[ 1]])
>>> x.item()
1
>>> x = torch.tensor(2.5)
>>> x
tensor(2.5000)
>>> x.item()
2.5
使用建立張量,requires_grad=True以便torch.autograd在其上記錄操做以進行自動微分。
::
>>> x = torch.tensor([[1., -1.], [1., 1.]], requires_grad=True)
>>> out = x.pow(2).sum()
>>> out.backward()
>>> x.grad
tensor([[ 2.0000, -2.0000],
[ 2.0000, 2.0000]])
每一個張量都有一個關聯的torch.Storage,用於保存其數據。
.. 注意::
改變張量的方法用下劃線後綴標記。例如,torch.FloatTensor.abs_()就地計算絕對值並返回修改後的張量,而torch.FloatTensor.abs() 在新張量中計算結果
.. 注意::
要更改現有的張量torch.device和/或torch.dtype,請考慮to()在張量上使用
.. class:: Tensor()
建立張量的主要方法有幾種,具體取決於您的用例。
要使用現有數據建立張量,請使用torch.tensor()。
要建立具備特定大小的張量,請使用torch.*張量建立操做(請參閱建立操做)。
要建立與另外一個張量具備相同大小(和類似類型)的張量,請使用torch.*_like張量建立操做(請參見建立操做)。
要建立與其餘張量具備類似類型但大小不一樣的張量,請使用tensor.new_*creation ops。
.. automethod:: new_tensor
.. automethod:: new_full
.. automethod:: new_empty
.. automethod:: new_ones
.. automethod:: new_zeros
.. autoattribute:: is_cuda
.. autoattribute:: device
.. autoattribute:: grad
.. autoattribute:: ndim
.. autoattribute:: T
.. automethod:: abs
.. automethod:: abs_
.. automethod:: acos
.. automethod:: acos_
.. automethod:: add
.. automethod:: add_
.. automethod:: addbmm
.. automethod:: addbmm_
.. automethod:: addcdiv
.. automethod:: addcdiv_
.. automethod:: addcmul
.. automethod:: addcmul_
.. automethod:: addmm
.. automethod:: addmm_
.. automethod:: addmv
.. automethod:: addmv_
.. automethod:: addr
.. automethod:: addr_
.. automethod:: allclose
.. automethod:: apply_
.. automethod:: argmax 返回input張量中全部元素的最大值的索引
.. automethod:: argmin
.. automethod:: argsort 返回按值升序對給定維度上的張量排序的索引。
.. automethod:: asin
.. automethod:: asin_
.. automethod:: as_strided
.. automethod:: atan
.. automethod:: atan2
.. automethod:: atan2_
.. automethod:: atan_
.. automethod:: backward 進行反向傳播計算
.. automethod:: baddbmm
.. automethod:: baddbmm_
.. automethod:: bernoulli
.. automethod:: bernoulli_
.. automethod:: bfloat16
.. automethod:: bincount
.. automethod:: bitwise_not
.. automethod:: bitwise_not_
.. automethod:: bmm
.. automethod:: bool
.. automethod:: byte
.. automethod:: cauchy_
.. automethod:: ceil
.. automethod:: ceil_
.. automethod:: char
.. automethod:: cholesky
.. automethod:: cholesky_inverse
.. automethod:: cholesky_solve
.. automethod:: chunk將張量拆分爲特定數量的塊
.. automethod:: clamp將全部元素固定在[,]input範圍內,並返回結果張量
.. automethod:: clamp_
.. automethod:: clone
.. automethod:: contiguous
.. automethod:: copy_
.. automethod:: cos
.. automethod:: cos_
.. automethod:: cosh
.. automethod:: cosh_
.. automethod:: cpu返回此對象在CPU內存中的副本
.. automethod:: cross返回維度dim爲input 和的向量的叉積other
.. automethod:: cuda返回此對象在GPU內存中的副本
.. automethod:: cumprod返回input維度中 的元素的累積乘積dim。
.. automethod:: cumsum
.. automethod:: data_ptr
.. automethod:: dequantize
.. automethod:: det
.. automethod:: dense_dim
.. automethod:: detach返回與當前圖形分離的新Tensor
.. automethod:: detach_
.. automethod:: diag
.. automethod:: diag_embed
.. automethod:: diagflat
.. automethod:: diagonal
.. automethod:: fill_diagonal_
.. automethod:: digamma
.. automethod:: digamma_
.. automethod:: dim
.. automethod:: dist
.. automethod:: div
.. automethod:: div_
.. automethod:: dot
.. automethod:: double
.. automethod:: eig
.. automethod:: element_size
.. automethod:: eq
.. automethod:: eq_
.. automethod:: equal
.. automethod:: erf
.. automethod:: erf_
.. automethod:: erfc
.. automethod:: erfc_
.. automethod:: erfinv
.. automethod:: erfinv_
.. automethod:: exp
.. automethod:: exp_
.. automethod:: expm1
.. automethod:: expm1_
.. automethod:: expand
.. automethod:: expand_as
.. automethod:: exponential_
.. automethod:: fft
.. automethod:: fill_
.. automethod:: flatten展平張量中連續的範圍
.. automethod:: flip沿給定軸反轉nD張量的順序
.. automethod:: float
.. automethod:: floor
.. automethod:: floor_
.. automethod:: fmod
.. automethod:: fmod_
.. automethod:: frac
.. automethod:: frac_
.. automethod:: gather
.. automethod:: ge
.. automethod:: ge_
.. automethod:: gels
.. automethod:: geometric_
.. automethod:: geqrf
.. automethod:: ger
.. automethod:: get_device
.. automethod:: gt
.. automethod:: gt_
.. automethod:: half
.. automethod:: hardshrink
.. automethod:: histc
.. automethod:: ifft
.. automethod:: index_add_經過按中給定的順序添加索引,將張量的元素累加tensor到self張量中index
.. automethod:: index_add
.. automethod:: index_copy_經過按中給定的順序選擇索引,將的元素複製tensor到self張量中index
.. automethod:: index_copy
.. automethod:: index_fill_經過按中給出的順序選擇索引,self用值填充張量的元素
.. automethod:: index_fill
.. automethod:: index_put_使用中指定的索引(張量的元組)將張量的值value放入張量
.. automethod:: index_put
.. automethod:: index_select返回一個新的張量,該input張量dim使用index其中的LongTensor項沿維度對張 量進行索引
.. automethod:: indices若是self是稀疏的COO張量(即具備佈局),則返回包含的索引張量的視圖
.. automethod:: int
.. automethod:: int_repr
.. automethod:: inverse
.. automethod:: irfft
.. automethod:: is_contiguous
.. automethod:: is_floating_point
.. automethod:: is_leaf
.. automethod:: is_pinned
.. automethod:: is_set_to
.. automethod:: is_shared
.. automethod:: is_signed
.. automethod:: is_sparse
.. automethod:: item
.. automethod:: kthvalue
.. automethod:: le
.. automethod:: le_
.. automethod:: lerp
.. automethod:: lerp_
.. automethod:: log
.. automethod:: log_
.. automethod:: logdet
.. automethod:: log10
.. automethod:: log10_
.. automethod:: log1p
.. automethod:: log1p_
.. automethod:: log2
.. automethod:: log2_
.. automethod:: log_normal_
.. automethod:: logsumexp
.. automethod:: long
.. automethod:: lstsq
.. automethod:: lt
.. automethod:: lt_
.. automethod:: lu
.. automethod:: lu_solve
.. automethod:: map_
.. automethod:: masked_scatter_
.. automethod:: masked_scatter
.. automethod:: masked_fill_
.. automethod:: masked_fill
.. automethod:: masked_select
.. automethod:: matmul
.. automethod:: matrix_power
.. automethod:: max
.. automethod:: mean返回input張量中全部元素的平均值。
.. automethod:: median返回input張量中全部元素的中值。
.. automethod:: min
.. automethod:: mm
.. automethod:: mode返回一個namedtuple ,其中是給定維度中張量 的每一行的衆數值,即在該行中最常出現的值,而且是找到的每一個衆數值的索引位置
.. automethod:: mul
.. automethod:: mul_
.. automethod:: multinomial
.. automethod:: mv
.. automethod:: mvlgamma
.. automethod:: mvlgamma_
.. automethod:: narrow
.. automethod:: narrow_copy
.. automethod:: ndimension
.. automethod:: ne
.. automethod:: ne_
.. automethod:: neg
.. automethod:: neg_
.. automethod:: nelement
.. automethod:: nonzero
.. automethod:: norm返回給定張量的矩陣範數或向量範數。
.. automethod:: normal_
.. automethod:: numel返回input張量中元素的總數
.. automethod:: numpy返回爲NumPy ndarray
.. automethod:: orgqr
.. automethod:: ormqr
.. automethod:: permute
.. automethod:: pin_memory
.. automethod:: pinverse
.. automethod:: pow
.. automethod:: pow_
.. automethod:: prod
.. automethod:: put_
.. automethod:: qr
.. automethod:: qscheme
.. automethod:: q_scale
.. automethod:: q_zero_point
.. automethod:: random_
.. automethod:: reciprocal
.. automethod:: reciprocal_
.. automethod:: register_hook
.. automethod:: remainder
.. automethod:: remainder_
.. automethod:: renorm
.. automethod:: renorm_
.. automethod:: repeat
.. automethod:: repeat_interleave
.. automethod:: requires_grad
.. automethod:: requires_grad_
.. automethod:: reshape
.. automethod:: reshape_as
.. automethod:: resize_
.. automethod:: resize_as_
.. automethod:: retain_grad
.. automethod:: rfft
.. automethod:: roll
.. automethod:: rot90
.. automethod:: round
.. automethod:: round_
.. automethod:: rsqrt
.. automethod:: rsqrt_
.. automethod:: scatter
.. automethod:: scatter_在true的位置將元素從張量複製source到self張量mask
.. automethod:: scatter_add_
.. automethod:: scatter_add
.. automethod:: select在給定索引處沿選定維度切片張量
.. automethod:: set_
.. automethod:: share_memory_
.. automethod:: short
.. automethod:: sigmoid
.. automethod:: sigmoid_
.. automethod:: sign
.. automethod:: sign_
.. automethod:: sin
.. automethod:: sin_
.. automethod:: sinh
.. automethod:: sinh_
.. automethod:: size
.. automethod:: slogdet
.. automethod:: solve
.. automethod:: sort
.. automethod:: split
.. automethod:: sparse_mask
.. automethod:: sparse_dim
.. automethod:: sqrt
.. automethod:: sqrt_
.. automethod:: squeeze返回一個刪除全部input大小爲1的尺寸的張量
.. automethod:: squeeze_
.. automethod:: std
.. automethod:: stft
.. automethod:: storage
.. automethod:: storage_offset
.. automethod:: storage_type
.. automethod:: stride
.. automethod:: sub
.. automethod:: sub_
.. automethod:: sum
.. automethod:: sum_to_size
.. automethod:: svd
.. automethod:: symeig
.. automethod:: t
.. automethod:: t_
.. automethod:: to
.. automethod:: to_mkldnn
.. automethod:: take返回具備的元素input在給定索引處的新張量
.. automethod:: tan
.. automethod:: tan_
.. automethod:: tanh
.. automethod:: tanh_
.. automethod:: tolist轉換爲list
.. automethod:: topk
.. automethod:: to_sparse
.. automethod:: trace返回輸入二維矩陣對角線元素的總和
.. automethod:: transpose
.. automethod:: transpose_
.. automethod:: triangular_solve
.. automethod:: tril
.. automethod:: tril_
.. automethod:: triu
.. automethod:: triu_
.. automethod:: trunc返回一個新的張量,其中帶有的元素的整數值被截斷input
.. automethod:: trunc_
.. automethod:: type
.. automethod:: type_as
.. automethod:: unbind刪除張量尺寸
.. automethod:: unfold
.. automethod:: uniform_
.. automethod:: unique返回輸入張量的惟一元素
.. automethod:: unique_consecutive
.. automethod:: unsqueeze返回在指定位置插入的尺寸爲一的新張量
.. automethod:: unsqueeze_
.. automethod:: values
.. automethod:: var
.. automethod:: view返回一個新的張量,其數據與self張量相同,但不一樣shape
.. automethod:: view_as
.. automethod:: where
.. automethod:: zero_
.. class:: BoolTensor()
The following methods are unique to :class:`torch.BoolTensor`.
.. automethod:: all
.. automethod:: any
"""
import torch
t = torch.tensor([[1., -1.], [1., -1.]])
t2 = torch.tensor([[1., -1.], [1., -1.]],dtype=torch.float)
t3 = torch.FloatTensor([[1., -1.], [1., -1.]])
t4 = torch.Tensor(3,5)
print(type(t2),type(t3),t4,t3)