1.Pytorch中tensor.view()
把原来tensor中的数据,按照优先顺序重新排列,参数不可为空,参数中的-1表示这个位置由其他位置的数字来推断,如果没有-1,那么所有参数的乘积就要和tensor中元素的总个数一致了,否则就会出现错误。
注意:这样并不会改变原本Tensor的格式,可以通过赋值得到一个新格式的变量,但是需要注意这个时候是浅拷贝,改变原来的变量仍然会使新变量内容改变。
1 | a=torch.Tensor([[[1,2,3],[4,5,6]]]) |
2.torch.nn.functional.affine_grid和torch.nn.functional.grid_sample
pytorch 中提供了对Tensor进行Crop的方法,可以使用GPU实现。具体函数是torch.nn.functional.affine_grid
和torch.nn.functional.grid_sample
。前者用于生成二维网格,后者对输入Tensor按照网格进行双线性采样。
grid_sample
函数中将图像坐标归一化到[−1,1][−1,1],其中0对应-1,width-1对应1。
affine_grid
的输入是 仿射矩阵(Nx2x3)和欲输出Tensor的尺寸(Tensor.Size(NxHxWx2)),输出的是归一化的二维网格NxHxWx2x2。
对于output上的每一个点,(x,y)三个通道的像素值,采集自input上某一点三个通道的像素值,采集哪个点呢,坐标存储在grid最低维,也就是(N x OH x OW x 2) 中的2,[0]索引到input的x坐标,[1]索引到input的y坐标
要使用 pytorch 的平移操作,只需要两步:
- 创建 grid:
grid = torch.nn.functional.affine_grid(theta, size)
,其实我们可以通过调节size
设置所得到的图像的大小(相当于resize); - grid_sample 进行重采样:
outputs = torch.nn.functional.grid_sample(inputs, grid, mode='bilinear')
theta 的第三列为平移比例,向右为负,向下为负
torch.max()
形式: torch.max(input) → Tensor
返回输入tensor中所有元素的最大值:
1 | a = torch.randn(1, 3) |
形式: torch.max(input, dim, keepdim=False, out=None) -> (Tensor, LongTensor)
按维度dim 返回最大值,并且返回索引。
torch.max(a,0)返回每一列中最大值的那个元素,且返回索引(返回最大元素在这一列的行索引)。返回的最大值和索引各是一个tensor,一起构成元组(Tensor, LongTensor)
1 | a = torch.randn(3,3) |
torch.max(a,1)返回每一行中最大值的那个元素,且返回其索引(返回最大元素在这一行的列索引)
1 | a = torch.randn(3,3) |
拓展:torch.max()[0]
, 只返回最大值的每个数troch.max()[1]
, 只返回最大值的每个索引torch.max()[1].data
只返回variable中的数据部分(去掉Variable containing:)torch.max()[1].data.numpy()
把数据转化成numpy ndarrytorch.max()[1].data.numpy().squeeze()
把数据条目中维度为1 的删除掉
torch中.data和.detach()
都用于返回一个相同数据的tensor
PyTorch0.4中,.data 仍保留,但建议使用 .detach(), 区别在于 .data 返回和 x 的相同数据 tensor, 但不会加入到x的计算历史里,且require s_grad = False, 这样有些时候是不安全的, 因为 x.data 不能被 autograd 追踪求微分 。 .detach() 返回相同数据的 tensor ,且 requires_grad=False ,但能通过 in-place 操作报告给 autograd 在进行反向传播的时候.
实例参考:https://blog.csdn.net/DreamHome_S/article/details/85259533
但是在以下代码中不会改变out的值:
1 | a = torch.tensor([1, 2, 3.], requires_grad=True) |
tensor的相关知识的介绍:
tensor的求导https://www.jianshu.com/p/a105858567df
tensor的初始化 https://www.jianshu.com/p/7dbfc7076e5a