文章目录
1. hasattr(object, name) # 判断是否包含属性
判断 object对象 是否包含 name属性(字符串)
2. x.view(1, 3, 255, 13, 13).permute(0, 1, 3, 4, 2)
- 高纬转置矩阵
- x.transpose(0, 1) 和 x.permute(0, 1) 的区别:
只要使用了transpose 函数,不管是否交换,is_contiguous() 的结果都是FALSE;而permute(0, 1) 不交换时,is_contiguous() 属性会是TRUE。 - 这样看来 使用 permute 应该是要比 transpose 更好的。
2. contiguous 用法
- 将.permute 之后 数据变成 内存上是连续性质的;
- 使用 contiguous 函数的原因:view 函数只能使用在 contiguous 的 variable 上。
代码如下:
import torch
x = torch.ones(10, 10)
print(x.is_contiguous())
print(x.transpose(0, 1).is_contiguous())
print(x.permute(1, 0).is_contiguous())
print(x.transpose(0, 1).contiguous().is_contiguous())
print(x.permute(1, 0).contiguous().is_contiguous())
True
False
False
True
True