<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ding_programmer的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ding_programmer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ding_programmer]]></copyright><item><title><![CDATA[TypeError: BoxAnnotator.annotate() got an unexpected keyword argument ‘labels‘]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/141069209</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/141069209</guid><author>ding_programmer</author><pubDate>Fri, 09 Aug 2024 18:47:22 +0800</pubDate><description><![CDATA[把 supervision的版本 从0.22 变成0.18 就可以了.主要是由于新版本更新，删除了这个参数’labels’，回退到原来的版本。]]></description><category></category></item><item><title><![CDATA[transformer架构中 encoder decoder self-attention cross-attention的作用]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/133418031</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/133418031</guid><author>ding_programmer</author><pubDate>Fri, 29 Sep 2023 15:11:52 +0800</pubDate><description><![CDATA[在Transformer架构中，Encoder-Decoder架构是一种常见的模式，其中Encoder和Decoder分别负责编码输入序列和解码生成输出序列。Self-Attention（自注意力）和Cross-Attention（交叉注意力）是Transformer中的关键组件，用于实现序列建模和特征提取。]]></description><category></category></item><item><title><![CDATA[相对位置编码和绝对位置编码]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131978957</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131978957</guid><author>ding_programmer</author><pubDate>Fri, 28 Jul 2023 14:23:10 +0800</pubDate><description><![CDATA[位置编码的区别：相对位置编码和绝对位置编码是两种不同的位置编码方法。绝对位置编码是一种基于位置嵌入的方法，其中每个位置都被分配了一个唯一的位置向量。这些向量是固定的，与输入序列的内容无关。这种编码方式对于处理较短的序列效果较好，但在处理长序列时可能会存在问题，因为序列的长度超过了模型能够处理的位置编码的范围。相对位置编码是一种基于相对位置的方法，其中每个位置被编码为一个偏移量，表示该位置与其他位置之间的相对距离。相对位置编码可以通过在输入嵌入中添加额外的信息来实现。]]></description><category></category></item><item><title><![CDATA[pytorch中选取不同维度sum和mean方法理解]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131572257</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131572257</guid><author>ding_programmer</author><pubDate>Thu, 06 Jul 2023 11:26:40 +0800</pubDate><description><![CDATA[比如一个矩阵维度(2,3,4)，dim=0，那就是消去第0维，变成了 (3,4)，消去第1维，变成了 (2,4)，消去第2维，变成了 (2,3)，dim=-1，也就是最后一维，在这个矩阵中也就是第二维。如果指定了dim参数，则会沿着指定的维度对输入张量进行求和操作，并返回一个形状与输入张量除了指定维度之外的维度相同的张量。如果指定了keepdim参数，则返回的张量会保持与输入张量相同的维度数，并且在指定维度上的大小为1。具体算维度，采用消解法，也就是 dim=0，那就是消去第0维，dim=1，消去第1维。]]></description><category></category></item><item><title><![CDATA[pytorch contiguous().view(-1, 1) 作用]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131571462</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131571462</guid><author>ding_programmer</author><pubDate>Thu, 06 Jul 2023 10:58:34 +0800</pubDate><description><![CDATA[具体而言，该代码会先使用contiguous()方法将输入张量变成一个连续存储的副本，然后使用view()方法将其重塑为一个列向量，其中-1表示自动计算该维度的大小，1表示该列向量只有一列，即为一个列向量。注意，使用view()方法对非连续存储的张量进行操作时，需要先使用contiguous()方法将其变成连续存储的张量，否则可能会出现运行时错误。在对x进行重塑时，我们首先使用contiguous()方法将其变成连续存储的副本，然后使用view()方法将其重塑为一个列向量。]]></description><category></category></item><item><title><![CDATA[model.train() 和 model.eval() 作用]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131414277</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131414277</guid><author>ding_programmer</author><pubDate>Tue, 27 Jun 2023 11:55:48 +0800</pubDate><description><![CDATA[因此，在训练模式下，我们需要保证 Batch Normalization 和 Dropout 等层的正常工作，以使模型能够得到更好的训练效果。因此，在评估模式下，我们需要保证 Batch Normalization 和 Dropout 等层的评估工作，以使模型能够得到更好的评估效果。在训练和测试阶段，模型的行为可能会有所不同，特别是当模型包含 Batch Normalization 和 Dropout 等层时，这些层在训练和测试阶段的行为可能不同。]]></description><category></category></item><item><title><![CDATA[pytorch 固定部分网络参数需要使用 with torch.no_grad()吗]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131413385</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131413385</guid><author>ding_programmer</author><pubDate>Tue, 27 Jun 2023 11:51:38 +0800</pubDate><description><![CDATA[可以看到，由于我们在 fc2 层使用了 torch.no_grad()，因此 fc2 层的参数的梯度为 None，而 fc1 层的参数的梯度正常计算。当我们将需要固定的参数的 requires_grad 属性设置为 False 时，这些参数在计算梯度时就不会被更新，因此不需要使用 torch.no_grad()。然而，当我们在使用不需要更新的参数进行前向传递时，如果不使用 torch.no_grad()，PyTorch 会默认计算梯度，这会浪费计算资源。此时，可以使用 torch.no_grad()。]]></description><category></category></item><item><title><![CDATA[Pytorch反向传播——optimizer.zero_grad(), loss.backward(), optimizer.step() 作用]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131413639</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131413639</guid><author>ding_programmer</author><pubDate>Tue, 27 Jun 2023 11:39:11 +0800</pubDate><description><![CDATA[例如，常用的优化算法如 Adam、SGD 等，都有自己的更新规则，optimizer.step() 会按照相应的规则更新网络参数的值。先使用 optimizer.zero_grad() 用于清空优化器中的梯度，再前向传播，计算loss，再loss.backward()计算梯度，再用optimizer.step()更新梯度。loss.backward() 是 PyTorch 中用于自动求导的函数，它的主要作用是计算损失函数对模型参数的梯度，从而实现反向传播算法。]]></description><category></category></item><item><title><![CDATA[pytorch 固定部分网络参数应该怎么写]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131413233</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131413233</guid><author>ding_programmer</author><pubDate>Tue, 27 Jun 2023 11:19:45 +0800</pubDate><description><![CDATA[在 PyTorch 中，nn.Linear 的默认 requires_grad 属性是 True，即默认情况下会对线性层的权重和偏置进行梯度计算。nn.Conv2d 的默认 requires_grad 属性是 True，即默认情况下会对卷积层的权重和偏置进行梯度计算。在上述代码中，我们将 conv1 的权重和偏置的 requires_grad 属性设置为 False，这样在 backward() 计算梯度时，这些参数不会被更新。而其他参数的 requires_grad 属性默认为 True，会进行更新。]]></description><category></category></item><item><title><![CDATA[PyTorch 中，tensor不设置requires_grad和设置requires_grad=False的区别]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/131412835</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/131412835</guid><author>ding_programmer</author><pubDate>Tue, 27 Jun 2023 11:15:25 +0800</pubDate><description><![CDATA[可以看到，x 的梯度为 None，而 y 的梯度为 2，这是因为 x 没有设置 requires_grad，因此 PyTorch 不会为它计算梯度，而 y 的梯度为 2，表示其计算出的梯度值为 2。需要注意的是，如果一个 tensor 设置了 requires_grad=True，那么其依赖的所有 tensor 也会自动设置为 requires_grad=True。这种情况下，PyTorch 不会构建用于计算 tensor 梯度的计算图，因此也不会计算 tensor 的梯度。错误表示没有元素需要计算梯度。]]></description><category></category></item><item><title><![CDATA[Masked Autoencoder论文中 fine-tuning 和 linear probing含义]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/127374337</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/127374337</guid><author>ding_programmer</author><pubDate>Mon, 17 Oct 2022 20:05:28 +0800</pubDate><description><![CDATA[Masked Autoencoder论文中 fine-tuning 和 linear probing含义]]></description><category></category></item><item><title><![CDATA[Pytorch中 torch.cat与torch.stack 拼接函数]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/123083948</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/123083948</guid><author>ding_programmer</author><pubDate>Wed, 23 Feb 2022 10:23:47 +0800</pubDate><description><![CDATA[stack()
拼接函数，是拼接以后，再扩展一维。torch.stack()有两个参数，第一个是要拼接的张量的列表或是元组；第二个参数是拼接的维度。
cat()
拼接函数，将多个张量拼接成一个张量，保持维度不变。torch.cat()有两个参数，第一个是要拼接的张量的列表或是元组；第二个参数是拼接的维度。
torch.cat() 和 torch.stack()函数要求输入张量的大小完全相同，才能进行拼接
stack与cat的区别在于， 得到的张量的维度会比输入的张量的大小多1，并且多出的那个维度就是拼接的维]]></description><category></category></item><item><title><![CDATA[pytorch tensor和 numpy的相互转换]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/123083470</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/123083470</guid><author>ding_programmer</author><pubDate>Wed, 23 Feb 2022 10:12:50 +0800</pubDate><description><![CDATA[tensor 转换为 numpy
采用 .numpy() 函数即可
a=torch.tensor([1,2,3])  
print(a)
print(type(a))
print(a.dtype)
b=a.numpy()
print(b)
print(type(b))
print(b.dtype)

输出：

torch.tensor 整数默认为 int64 即 LongTensor  小数默认为 float32
不过 一般对tensor 采用 tensor.data() 或者 tensor.detach(]]></description><category></category></item><item><title><![CDATA[pytorch 矩阵和向量乘法]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/120822430</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/120822430</guid><author>ding_programmer</author><pubDate>Mon, 18 Oct 2021 11:33:36 +0800</pubDate><description><![CDATA[a=torch.tensor([1,2,3])
c=torch.tensor([[1,2,3],[4,5,6]])
print(torch.mul(a,c))
print(torch.matmul(c,a))
tensor([[ 1,  4,  9],
        [ 4, 10, 18]])
tensor([14, 32])

向量

点乘：又叫做点积、内积、数量积、标量积，向量a[a1,a2,...,an]和向量b[b1,b2b...,bn]点乘的结果是一个标量，记作a.b；
得到一个值。

...]]></description><category></category></item><item><title><![CDATA[自监督学习和无监督学习的区别]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/120247824</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/120247824</guid><author>ding_programmer</author><pubDate>Sun, 12 Sep 2021 10:47:05 +0800</pubDate><description><![CDATA[无监督学习
无监督学习不依赖任何标签值，通过对数据内在特征的挖掘，找到样本间的关系，比如聚类相关的任务
自监督学习
和无监督学习不同，自监督学习主要是利用辅助任务（pretext）从大规模的无监督数据中挖掘自身的监督信息，通过这种构造的监督信息对网络进行训练，从而可以学习到对下游任务有价值的表征。
换句话说：自监督学习的监督信息不是人工标注的，而是是通过辅助任务（pretext）在大规模无监督数据中自动构造监督信息，通过得到的标签，就可以类似有监督学习一样进行训练。
区别
自监督学习是从数据本身找标签来进行]]></description><category></category></item><item><title><![CDATA[向量范数和矩阵范数]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/119547091</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/119547091</guid><author>ding_programmer</author><pubDate>Mon, 09 Aug 2021 22:26:44 +0800</pubDate><description><![CDATA[范数

 范数(norm)是数学中的一种基本概念。在泛函分析中，它定义在赋范线性空间中，并满足一定的条件，即 ①非负性；②齐次性；③三角不等式。它常常被用来度量某个向量空间（或矩阵）中的每个向量的长度或大小。范数，是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域，范数是一个函数，是矢量空间内的所有矢量赋予非零的正长度或大小。半范数可以为非零的矢量赋予零长度。

总的来说，范数的定义就是一种具有“长度”概念的函数



一、向量范数



总体公式



举例 先定义一个向量为：

1.1 ..]]></description><category></category></item><item><title><![CDATA[浅谈C++指针和引用的区别]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/107919166</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/107919166</guid><author>ding_programmer</author><pubDate>Mon, 10 Aug 2020 18:29:18 +0800</pubDate><description><![CDATA[指针：指针是一个变量，只不过这个变量存储的是一个地址，指向内存的一个存储单元；

而引用跟原来的变量实质上是同一个东西，只不过是原变量的一个别名而已。如：


int a=1;int *p=&amp;a; # 指针

int a=1;int &amp;b=a;  # 引用



我主要从变量的地址角度来说明指针和引用的区别

大家请看下面的代码




#include&lt;iostream&gt;

using namespace std;



int main(){
	
	
	int a=5;
..]]></description><category></category></item><item><title><![CDATA[numpy.diag()函数用法]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/105997391</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/105997391</guid><author>ding_programmer</author><pubDate>Fri, 08 May 2020 15:12:26 +0800</pubDate><description><![CDATA[numpy模块中有个函数diagonal，就是处理对角线的函数
numpy.diag(v,k=0)
以一维数组的形式返回方阵的对角线（或非对角线）元素，或将一维数组转换成方阵（非对角线元素为0）.两种功能角色转变取决于输入的v
v : array_like.
如果v是2D数组，返回k位置的对角线。
如果v是1D数组，返回一个v作为k位置对角线的2维数组。
k : int, optional
对角线...]]></description><category></category></item><item><title><![CDATA[201509-2 日期计算 C++实现 100分]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/105913650</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/105913650</guid><author>ding_programmer</author><pubDate>Mon, 04 May 2020 10:21:10 +0800</pubDate><description><![CDATA[问题描述
　　给定一个年份y和一个整数d，问这一年的第d天是几月几日？
　　注意闰年的2月有29天。满足下面条件之一的是闰年：
　　1） 年份是4的整数倍，而且不是100的整数倍；
　　2） 年份是400的整数倍。
输入格式
　　输入的第一行包含一个整数y，表示年份，年份在1900到2015之间（包含1900和2015）。
　　输入的第二行包含一个整数d，d在1至365之间。
输出格式
　　输出两...]]></description><category></category></item><item><title><![CDATA[201512-2 消除类游戏 C++ 100分实现]]></title><link>https://blog.youkuaiyun.com/ding_programmer/article/details/105843618</link><guid>https://blog.youkuaiyun.com/ding_programmer/article/details/105843618</guid><author>ding_programmer</author><pubDate>Wed, 29 Apr 2020 17:10:14 +0800</pubDate><description><![CDATA[问题描述
　　消除类游戏是深受大众欢迎的一种游戏，游戏在一个包含有n行m列的游戏棋盘上进行，棋盘的每一行每一列的方格上放着一个有颜色的棋子，当一行或一列上有连续三个或更多的相同颜色的棋子时，这些棋子都被消除。当有多处可以被消除时，这些地方的棋子将同时被消除。
　　现在给你一个n行m列的棋盘，棋盘中的每一个方格上有一个棋子，请给出经过一次消除后的棋盘。
　　请注意：一个棋子可能在某一行和某一列同时被...]]></description><category></category></item></channel></rss>