要求:求A=torch.rand[8,8]的张量中每个4*4块的均值和方差
逛了一圈优快云,发现没有关于求张量N*N分块后的均值和方差的代码,我就自己来写一个把
- 求张量的均值
def Trans2mean(image):#假设就是1通道张量
h,w=image.shape
block_h,block_w=h//4,w//4#假设4*4分块
#先按行切成 block_h块,每块4个
temp_h=torch.split(image,[4 for x in range(0,block_h)],0)
ALLmean=torch.zeros(block_h,block_w)
for i in range(0,block_h):
temp_w=temp_h[i].split([4 for y in range(0,block_h)],1)
for j in range(0,block_w):
ALLmean[i,j]=temp_w[j].mean()#算的是平方
return ALLmean
- 求张量的方差(其实是一样的)
def Trans2var(image):#假设就是1通道张量
h,w=image.shape
block_h,block_w=h//4,w//4#假设4*4分块
#先按行切成 block_h块,每块4个
temp_h=torch.split(image,[4 for x in range(0,block_h)],0)
ALLvar=torch.zeros(block_h,block_w)
for i in range(0,block_h):
temp_w=temp_h[i].split([4 for y in range(0,block_h)],1)
for j in range(0,block_w):
ALLvar[i,j]=temp_w[j].var()#算的是方差
return ALLvar
- 测试
#单元测试
if __name__ == '__main__':
A=torch.rand(8,8)
var_map=Trans2var(A)
mean_map=Trans2mean(A)
- 实验结果

这篇博客介绍了如何使用PyTorch计算一个8x8张量中每个4x4块的均值和方差。作者提供了两个函数`Trans2mean`和`Trans2var`,分别用于计算均值和方差。这两个函数通过张量切片和split操作实现了分块计算,并返回了一个表示每个块均值或方差的二维张量。
538

被折叠的 条评论
为什么被折叠?



