承接上一节,继续来学一下更加高级那么一点点的操作。
5.张量的几个基本操作
a = torch.rand(2,3,4) # 随机生成一个张量
a.view(-1,2) # 把张量变成含有两列的张量,行数程序自己算
a.reshape(-1,2) # 把张量变成含有两列的张量,行数程序自己算
a.numpy() # 转换成numpy的数组
torch.from_numpy(a.numpy()) # 从numpy转为tensor
6. 张量的索引
a[:,:,:] # 三个维度全取
a[1:,:,:3] # 在第一个维度从第一个元素开始取;在第二个维度全取;在第三个维度取到第2个元素(不包含冒号后的end位置)
a[1:2,:,:]
7. 张量的广播
广播(broadcasting)指的是不同形状的张量之间的算数运算的执行方式。
a = torch.randint(0,9,size=(3,3))
a*4
a = torch.randint(0,9,size=(1,4))
b = torch.randint(0,9,size=(4,1))
a-b
上面这个例子a
本身为(1 imes4)的张量,而b是(4 imes1)的张量。那么a想要和b进行运算,就必须按照b的行来补,b就得按照a的列数量来补充。