2025.8.1学习日记
2.模拟测试
这里是接7月31号的部分
2.3 PromptEncoder模块
【经验1】:这一部分是关于pytorch中的部分内置函数。
- torch.topk()
torch.topk()默认使用dim=-1选择张量的最后一个维度,默认使用largest=True返回k个最大值,默认使用sorted选择k个元素也是有序的,最后返回的是(values,indices)组合而成的元组,例如我对大小为[B,1,S,H*W]张量,使用topk,返回的values,indices的大小都是[B,1,S,H*W]
🥪:这个函数一般用于选择使用他返回的索引indices,搭配一种显著性分数计算算法,选择k个最大显著特征. - torch.Tensor.expand()
torch.Tensor.expand()会返回张量的视图,expand的输入扩展为目标张量的大小,需要严格匹配张量的size,例如输入张量的大小为[B,1,S,H,W],那么expand的输入就必须为expand(-1,3,-1,-1,-1),其中-1表示占位符,不对这个维度做扩展(实际上也无法对这个张量做扩展,因为维度不为1),3表示对张量扩展复制3次
🥪:这个函数一般用于批量复制显著点的索引 - torch.gather()
torch.gather(),在官方介绍中,torch.gather()的运行原理可能会比较晦涩,这里需要明确一个概念,torch.gather()的输入和输出的形状是一致的,输入的索引是[H,W]那么输出的索引也是[H,W]
其次gather用于一维索引比较好理解,即目标图的大小设置为[B,32,S,H*W],那么索引图最好也是[B,32,S,Num],其中value(Num)要在H*W的范围内,此时就可以简单认为索引值在哪个维度就dim参数就设置在相应的维度,例如索引值在最后一维,那么可以设置dim=-1 - torch.squeeze()/torch.unsqueeze()
这两个函数一个用来去掉dim == 1的维度,默认去掉所有dim == 1的维度,可以通过指定位置去掉dim == 1的维度;另一个函数用于用于在指定位置创造dim == 1的维度
【经验2】在Notebook中输出MarkDown,主要是配合IPython.display模块中的display函数与MarkDown类display(Markdown(f"{'#'*Level} {Your_Text}")),Level表示输出级别,体现在字体大小,Your_Text表示你要输出的标题内容
-1.
【】谁都有难以名状的心情,因此人会变的难过

浙公网安备 33010602011771号