【Pytorch学习 - 1】何为Tensors?
¶Tensors介绍
Tensors可以简单地看成数组或矩阵(类似Numpy中的ndarrays
),在Pytorch中可用tensors来表示一个模型的输入、输出和参数.
可用tensor.shape tensor.dtype tensor.device
来查看tensor
的维度、数据类型和设备.
1 | %matplotlib inline |
¶Tensor的初始化 - 1
Pytorch中的tensor结构有多种初始化的方法, 可以直接由List或者Numpy数组初始化, 但要注意由numpy array
转tensor
是一个原地操作, 两者共享存储地址, 只改变解释方式,改变tensor
的同时会改变numpy array
, 例如:
1 | # From Data |
运行结果为:
1 | Numpy np_array value: |
¶python中的tensor初始化 - 2
可以利用元组shape
参数来初始化tensor,例如:
1 | shape = (2,3,) |
运行结果为:
1 | Random Tensor: |
¶Tensor操作
¶从CPU转移到GPU
Tensor默认创建在CPU上,如果需要在GPU上运行,可以使用torch.to
来移动tensor,也可以预先指定设备为GPU。例如:
1 | # We move our tensor to the GPU if available |
¶剪切与赋值操作
和Numpy类似,不再赘述:
1 | tensor = torch.ones(4, 4) |
¶连接操作
用torch.cat
来连接tensor,默认为行方向连接,用dim=1
参数指定列方向,例如:
1 | t1 = torch.cat([tensor, tensor, tensor],dim=1) |
¶算术运算
用@
、tensor.matmul
或torch.matmul
均可进行矩阵乘法,用*
、tensor.mul
或torch.mul
可实现矩阵对应位置相乘
1 | y1 = tensor @ tensor.T |
y123的结果是相同的,z123的结果也是相同的
¶tensor转数值
.item()
可将tensor转为python数值,例如:
1 | agg = tensor.sum() |
结果为:tensor(12.) <class 'torch.Tensor'> 12.0 <class 'float'>
¶Notice - tensor的原地操作
除了numpy array
转tensor
之外,还有一些原地操作,例如:x.copy_(y), x.t_(), x.add_(), x.numpy()
都会改变x
的值。
为保证程序完美运行,在内存开销足够的情况下,应尽量避免原地操作。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Chen0495的空间站!
评论