1. 形状;2. 元素数据类型;3. 每个元素的值;
访问元素
正常访问单个元素 [1, 2] ,访问第一行第二列的元素(有第0行和第0列)
访问一行 [1, :] ,访问第一行所有元素
访问一列 [:, 1] ,访问第一列所有元素
访问数组中某个连续的子区域 [1:3, 1:] ,从第一列到第三列(3是开区间)and第一列到最后
访问数组中的子区域 [::3, ::2] ,:: 标示跳跃,每3行取一次,每2列取一次
import torch # 生成一个[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]的数组 x = torch.arange(12); # x -> tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) x.shape() # x 的形状,返回维度 torch.Size([12]) x.numel() # x 元素的个数,返回值是个标量 12 x = x.reshape(3, 4) # 改变 x 的形状 # tensor([0, 1, 2, 3], # [4, 5, 6, 7], # [8, 9, 10, 11]]) # 还可以使用全 0 全 1 创建 torch.zeros((2, 3, 4)) #torch.ones((2, 3, 4)) #tensor([[[0., 0., 0., 0.], # [0., 0., 0., 0.], # [0., 0., 0., 0.]], # # [[0., 0., 0., 0.], # [0., 0., 0., 0.], # [0., 0., 0., 0.]]])
1. 常见的标准运算(+, -,*, /,和**)都是按元素计算的
2. 多个张量连接,dim = 0 行拼接, dim =1 列拼接,以此类推。
3. 通过逻辑运算符构建
4. 对张量中所有元素进行求和,结果变为一个元素的张量
5. 即使形状不同,可以使用广播机制(broadcasting mechansim)执行按位操作。注意维度一致!
可以看出,其实是对a和b分别进行复制,把a复制一列,变成(3, 2); 把b复制3行,也变成(3, 2),然后就可以按位操作。
注意:广播机制触发是需要两个条件的,第一个是两个张量必须不为空,第二个是两个张量从右向左依次比较,要么相同,要么其中一个为1,要么其中一个为空。



