![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
深度学习框架笔记
学习深度学习框架时遇到问题的记录
清欢年岁~
计算机视觉、深度学习
展开
-
[pytorch]访问模型所有层并查看参数
在应用中,有时候需要遍历模型的各个层,查看其梯度情况等,或者是加载模型的参数字典后要检查是否加载正确。常用的有如下几种方法:构造一个简单的模型:1、结果如下:2、可见,相比于上面的方法,这个方法没有层的名字。for中的_表示编号数字。在自监督学习中,经常会采用一种叫做的评价方法,这个方法是在finetune阶段固定住分类头之前的所有参数,只对分类头的参数进行训练,因此可以采用下面的代码对所有非分类头的参数设置为不需要梯度,这样在训练阶段就能固定住其参数了。...原创 2022-06-24 15:53:11 · 2110 阅读 · 1 评论 -
[python]生成器、迭代器
生成器迭代器和生成器yield类似于return,区别是下次执行的时候会从当前的迭代值继续向下迭代。可以让函数视为一个迭代器调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。迭代流程:...原创 2022-06-17 22:56:09 · 151 阅读 · 0 评论 -
[pytorch]torch.roll函数
torch中的roll函数可以用于张量的位置变换操作。博客推荐从上面的例子可以看出移动只发生在指定的维度上,在中就是图片的高、宽(其形式为) 的维度表示图片的H,也就是一个shape为的张量,shift=1表示这个维度上向下移动一个元素,多出的补到开头,而维度为图片的W,shift=-1表示这个维度上向上移动一个元素。...原创 2022-06-11 22:36:46 · 481 阅读 · 0 评论 -
[pytorch]unfold操作
unfold函数是一种图片的分块操作,可以提取出卷积核扫过的元素,并不做其它的运算。我们平时调用pytorch的卷积接口,使用的是Conv,是一个完全封装好的过程。使用unfold,相当于将kernel滑动扫过的数据提取出来。就像ViT模型的patch embedding操作一样,可以得到一个patch中的所有元素。unfold(x)的输出行就是卷积核当前位置在这个矩阵上所扫过的元素(例如0、2、8、10就是每次卷积核最左上角扫过的元素)。按照列来看就是在所有channel上的每一块元素的concat。原创 2022-06-08 22:28:29 · 2596 阅读 · 0 评论 -
[损失函数]:损失函数的整理
损失函数原创 2022-06-06 14:58:15 · 187 阅读 · 1 评论 -
[pytorch] 爱因斯坦标示法
使用einops库的这几个函数,可以有效地替代pytorch中的一些形状变换的操作。还可以应用在Transformer模型的img2patch中:池化操作:最后是repate操作原创 2022-06-02 20:11:28 · 233 阅读 · 0 评论 -
[pytorch]gather、stack函数
gather函数:gather API这个函数在MAE模型中的random-masking函数中也有应用。gather函数可以理解为根据对应的索引从原始的tensor中选择tensor,首先来看2-D的情况:t = torch.tensor([[1,2],[3,4]])torch.gather(t,1,torch.tensor([[0,0],[1,0]])) #tensor([[1, 1],# [4, 3]])dim对应变化的索引位置,在上面的例子中dim=1,这就意味着是从t原创 2022-05-29 23:34:37 · 214 阅读 · 0 评论