Lyndsey小鱼的日常琐碎笔记分享:
最近切身的真实感悟就是:要想真正理解以及学会使用,就必须得自己亲手去实践,而不是看着别人的博客笔记说,我差不多懂了,就过了。
所以,我现在也在用行动去证明这一点啦~
一、动手实践理解dim(int)的效果
(对于科研新手来说,做实验方面,首先最基本的就是要学会看懂别人代码是在干嘛啦~)
话不多说,直接进入今天的话题,我在看别人的代码时,看到了这样一个部分(注释都是我自己写的):
N, C = weight.shape # N C 获取当前权重的尺寸
# print(weight.shape) # torch.Size([16, 256])
weight = weight.view(N, C, 1, 1, 1).expand_as(feature) # 将权重的大小调整为与feature一样的大小 // # 只是维度有变化
# print(weight.shape) # torch.Size([16, 256, 75, 25, 2])
# 把一个tensor变成和函数括号内一样形状的tensor,用法与expand()类似。差别是expand括号里为size,expand_as括号里为其他tensor
result = (weight * feature).sum(dim=1) # 这个部分就不是很理解它是怎么变换的
# print(result.shape) # torch.Size([16, 75, 25, 2])
result = result.mean(dim=0)
# print(result.shape) # torch.Size([75, 25, 2])
请大家找到我注释的说不太懂变换那里,我将其输出查看,都是诸如以下的样子,根本看不到具体的变化。
[ 0.0199, 0.0199],
[ 0.0199, 0.0199],
[ 0.0199, 0.0199]],
...,
[[ 0.0199, 0.0199],
[ 0.0199, 0.0199],
[ 0.0199, 0.0199],
...,
[[ 0.0199, 0.0199],
[ 0.019