本系列记录了博主学习PyTorch过程中的笔记。本文记录的是torch包的相关内容,官方网址。只记录了一部分博主用到的,持续更新。更新于2019.03.21。
torch包包括了用于多维张量的数据结构,并定义了对于它们的数学计算。此外,这个包也提供了多种有效的张量及任意类型的并行化用法,以及其他有用的方法。
这个包对应于CUDA,允许用户在NVIDIA GPU(运算能力>=3.0)上运行张量计算。
文章目录
- 张量(Tensors)
- torch.is_tensor(obj)
- torch.is_storage(obj)
- torch.set_defaul_dtype(d)
- torch.get_default_type() → torch.dtype
- torch.set_default_tensor_type(t)
- torch.numel(input) → int
- torch.set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, profile=None)
- torch.set_flush_denormal(mode) → bool
- 运算
- torch.tensor(data, dtype=None, device=None, requires_grad=False) → Tensor
- torch.sparse_coo_tensor(indices, values, size=None, dtype=None, device=None, requires_grad=False) → Tensor
- torch.as_tensor(data, dtype=None, device=None) → Tensor
- torch.from_numpy(ndarray) → Tensor
- torch.zeros(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
- torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False) → Tensor
- torch.ones(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
- torch.ones_like(input, dtype=None, layout=None, device=None, requires_grad=False) → Tensor
- torch.arange(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
- torch.range(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
- torch.squeeze(input, dim=None, out=None) → Tensor
张量(Tensors)
torch.is_tensor(obj)
如果obj是一个PyTorch张量,返回True。
参数: obj(object)——用于测试的目标
torch.is_storage(obj)
如果obj是一个存储对象(storage object)则返回True。
参数: obj(object)——用于测试的目标
torch.set_defaul_dtype(d)
将默认的浮点数据类型(gloating point type)设成d
。这个类型将作为默认浮点数据类型用于在torch.tensor()
内的类型推断。
初始默认浮点数据类型是torch.float32
。
参数: d(torch.dtype
)——将被作为默认的浮点数据类型
例子:
>>> torch.tensor([1.2, 3]).dtype # initial default for floating point is torch.float32
torch.float32
>>> torch.set_default_dtype(torch.float64)
>>> torch.tensor([1.2, 3]).dtype # a new floating point tensor
torch.float64
torch.get_default_type() → torch.dtype
获取当前默认的浮点torch.dtype
。
例子:
>>> torch.get_default_dtype() # initial default for floating point is torch.float32
torch.float32
>>> torch.set_default_dtype(torch.float64)
>>> torch.get_default_dtype() # default is now changed to torch.float64
torch.float64
>>> torch.set_default_tensor_type(torch.FloatTensor) # setting tensor type also affects this
>>> torch.get_default_dtype() # changed to torch.float32, the dtype for torch.FloatTensor
torch.float32
torch.set_default_tensor_type(t)
将默认的torch.Tensor
类型设成浮点张量类型t
。这个类型将同样被用于torch.tensor()
浮点数类型的类型推断。
初始默认浮点张量类型是torch.FloatTensor
。
参数: t(type或string)——浮点张量类型或其名字
例子:
>>> torch.tensor([1.2, 3]).dtype # initial default for floating point is torch.float32
torch.float32
>>> torch.set_default_tensor_type(torch.DoubleTensor)
>>> torch.tensor([1.2, 3]).dtype # a new floating point tensor
torch.float64
torch.numel(input) → int
返回一个输入张量中的所有元素的个数。
参数: 输入(Tensor)——输入的张量
例子:
>>> a = torch.randn(1, 2, 3, 4, 5)
>>> torch.numel(a)
120
>>> a = torch.zeros(4,4)
>>> torch.numel(a)
16
torch.set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, profile=None)
从NumPy中取来的用于显示items的操作。
参数:
- precision —— 浮点输出的数字精度(默认4)
- threshold —— Total number of array elements which trigger summarization rather than full repr (default = 1000).
- edgeitems —— Number of array items in summary at beginning and end of each dimension (default = 3).
- linewidth —— The number of characters per line for the purpose of inserting line breaks (default = 80). Thresholded matrices will ignore this parameter.
- profile —— Sane defaults for pretty printing. Can override with any of the above options. (any one of default, short, full)
torch.set_flush_denormal(mode) → bool
使CPU上不正规的浮点数失效。
如果用户系统支持冲洗(flush)非正规数且成功编译冲洗非正规模式,返回True。set_flush_denormal()
仅支持支持SSE3的x86架构。
参数: mode(bool)——控制是否生效冲洗非正规数模式。
例子:
>>> torch.set_flush_denormal(True)
True
>>> torch.tensor([1e-323], dtype=torch.float64)
tensor([ 0.], dtype=torch.float64)
>>> torch.set_flush_denormal(False)
True
>>> torch.tensor([1e-323], dtype=torch.float64)
tensor(9.88131e-324 *
[ 1.0000], dtype=torch.float64)
运算
注意: Random sampling creation ops are listed under Random sampling and include: torch.rand() torch.rand_like() torch.randn() torch.randn_like() torch.randint() torch.randint_like() torch.randperm() You may also use torch.empty() with the In-place random sampling methods to create torch.Tensor s with values sampled from a broader range of distributions.
torch.tensor(data, dtype=None, device=None, requires_grad=False) → Tensor
torch.sparse_coo_tensor(indices, values, size=None, dtype=None, device=None, requires_grad=False) → Tensor
torch.as_tensor(data, dtype=None, device=None) → Tensor
torch.from_numpy(ndarray) → Tensor
torch.zeros(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
torch.zeros_like(input, dtype=None, layout=None, device=None, requires_grad=False) → Tensor
torch.ones(*sizes, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
torch.ones_like(input, dtype=None, layout=None, device=None, requires_grad=False) → Tensor
torch.arange(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
torch.range(start=0, end, step=1, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False) → Tensor
torch.squeeze(input, dim=None, out=None) → Tensor
返回一个张量,去除input
中所有尺寸是1的维度。
例如,如果输入形如,那么输出则形如。
当dim
给定时,squeeze操作只在给定的维度上进行。如果输入形如,那么squeeze(input, 0)
将返回一个没有改变的张量,但是squeeze(input,1)
将返回压缩过的张量,形如。