<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[EMIvv的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/EMIvv</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; EMIvv]]></copyright><item><title><![CDATA[多标签分类任务-服装分类]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/125468002</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/125468002</guid><author>EMIvv</author><pubDate>Wed, 29 Jun 2022 00:54:36 +0800</pubDate><description><![CDATA[首先分清一下multiclass和multilabel：多标签任务的难度主要集中在以下问题：现有的方法应对multi的预测主要有2大路线：而一般研究最多的应对relation会有3种策略：
一阶策略：忽略和其它标签的相关性，比如把多标签分解成多个独立的二分类问题。
二阶策略：考虑标签之间的成对关联，比如为相关标签和不相关标签排序。
高阶策略：考虑多个标签之间的关联，比如对每个标签考虑所有其它标签的影响。它的基本思路与ResNet一致，但是它建立的是前面所有层与后面层的密集连接（dense connectio]]></description><category></category></item><item><title><![CDATA[Ubuntu终端常用命令]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122970665</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122970665</guid><author>EMIvv</author><pubDate>Thu, 17 Feb 2022 16:19:23 +0800</pubDate><description><![CDATA[cp  [选项]  源文件或目录 目标文件或目录

常用选项：-r 拷贝源的所有子目录和文件
-i ：相同时会让用户选择是否覆盖，-f 是直接覆盖


ls -a 列出当前目录文件（包括隐含文件）
ls -l 列出当前目录下文件的详细信息
ls -d */. 或 echo */.  查看当前文件子目录
cd - 回上一次所在的目录
cd ~ 或 cd 回当前用户的宿主目录
mkdir 目录名： 创建一个目录
rmdir 空目录名： 删除一个空目录
rm 文件名 文件名： 删除一个文件或多个文件
rm -r.]]></description><category></category></item><item><title><![CDATA[C++中类的各种方法总结]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122932910</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122932910</guid><author>EMIvv</author><pubDate>Mon, 14 Feb 2022 22:08:21 +0800</pubDate><description><![CDATA[说明：student为类名
普通方法
bool student::set(int a)

构造方法

不带参数

student::student()


带参数

student::student(int a, string b)

析构方法（用于销毁对象，节省内存）
student::~student()

常成员方法（只读不写）
bool student::read() const

静态成员方法（依赖于类，不依赖于任何一个对象）
stacic int count()


...]]></description><category></category></item><item><title><![CDATA[Swin-Transformer详解]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122865975</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122865975</guid><author>EMIvv</author><pubDate>Sat, 12 Feb 2022 16:25:53 +0800</pubDate><description><![CDATA[引言

在各个cv领域都取得了非常不错的效果。
整体框架


可以看出他与VIT的主要区别就是SWIN的特征图和CNN类似，是具有层次性的，逐步下采样，所以在分割、检测任务会有更大的优势。而VIT是一次性下采样16倍。
其次，通过在低层次的时候限制patch之间建立关系，即会把图片分隔成不同的大块，大块之间是没有交流的。这样就可以节省大部分没有必要的计算量。即（Windows Multi-self Attention机制）。


细节
patch partition和linear embedding
4 *]]></description><category></category></item><item><title><![CDATA[python中列表和字典前加星号*的作用]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122861305</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122861305</guid><author>EMIvv</author><pubDate>Thu, 10 Feb 2022 15:05:58 +0800</pubDate><description><![CDATA[def add(a, b):
    return a + b

data = [4, 3]
print(*data)

data = {'a': 4, 'b': 3}
print(*data)
print(add(**data))



]]></description><category></category></item><item><title><![CDATA[pytorch中nn.parameter和require_grad=True的区别]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122859061</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122859061</guid><author>EMIvv</author><pubDate>Thu, 10 Feb 2022 13:40:37 +0800</pubDate><description><![CDATA[nn.parameter()
首先可以把这个函数理解为类型转换函数，将一个不可训练的类型Tensor转换成可以训练的类型parameter并将这个parameter绑定到这个module里面(net.parameter()中就有这个绑定的parameter，所以在参数优化的时候可以进行优化的)，所以经过类型转换这个self.v变成了模型的一部分，成为了模型中根据训练可以改动的参数了。
torch.tensor([1,2,3],requires_grad=True)
这个只是将参数变成可训练的，并没有绑定在m]]></description><category></category></item><item><title><![CDATA[python实现牛顿法求二次根、三次根]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122850066</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122850066</guid><author>EMIvv</author><pubDate>Wed, 09 Feb 2022 22:02:03 +0800</pubDate><description><![CDATA[公式：

:
    k = n
    while abs(k*k-n)&gt;1e-6:
        k = (k + n/k)/2
    print(k)

def cube_root(n):
    k = n
    while abs(k*k*k-n)&gt;1e-6:
        k = k + (k*k*k-n)/3*k*k
    print(k)
sqrt(2)
cube_root(8)


]]></description><category></category></item><item><title><![CDATA[Vision-Transformer详解]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122764606</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122764606</guid><author>EMIvv</author><pubDate>Tue, 08 Feb 2022 20:17:28 +0800</pubDate><description><![CDATA[引言（Transformer）


transformer一开始提出为上面这篇论文，主要应用在NLP领域。
在此之前，nlp主要使用RNN（记忆的长度是有限的，比较短，所以有了后面的LSTM），LSTM等时序网络， 且无法并行化训练（即必须先计算出t0时刻的数据，再计算t1时刻的数据），导致训练效率低。
所以提出transformer，如果在硬件不受限制的情况下，他的记忆长度是无限的。而且可以做并行化。

核心模块：self-attention


计算q,k,v
对(q*k) / np.sqrt(d)得到]]></description><category></category></item><item><title><![CDATA[python实现二叉树层次遍历（BFS）]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122658519</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122658519</guid><author>EMIvv</author><pubDate>Sun, 23 Jan 2022 22:28:02 +0800</pubDate><description><![CDATA[# 求二叉树路径DFS
class TreeNode:
    def __init__(self, val = None):
        self.left = None
        self.right = None
        self.val = val
class BTree:
    def insert(self,root,node): #构建二叉排序树
        if root is None:
            return node
        if roo.]]></description><category></category></item><item><title><![CDATA[python求二叉树所有路径（DFS）]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122657617</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122657617</guid><author>EMIvv</author><pubDate>Sun, 23 Jan 2022 21:29:55 +0800</pubDate><description><![CDATA[# 求二叉树路径DFS
class TreeNode:
    def __init__(self, val = None):
        self.left = None
        self.right = None
        self.val = val
class BTree:
    def insert(self,root,node): #构建二叉排序树
        if root is None:
            return node
        if root]]></description><category></category></item><item><title><![CDATA[python合并有序链表（递归）]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122652812</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122652812</guid><author>EMIvv</author><pubDate>Sun, 23 Jan 2022 16:10:01 +0800</pubDate><description><![CDATA[# 合并有序链表
class ListNode:
    def __init__(self, value=None):
        self.value = value
        self.next = None
def Creat_Link_Tail(lst):
    head = ListNode(lst[0])
    L = head
    for i in range(1, len(lst)):
        p = ListNode(lst[i])
        L.nex.]]></description><category></category></item><item><title><![CDATA[python求最长回文子串]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122649147</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122649147</guid><author>EMIvv</author><pubDate>Sun, 23 Jan 2022 11:43:16 +0800</pubDate><description><![CDATA[原理可参考链接：https://blog.youkuaiyun.com/sinat_35261315/article/details/78267046?spm=1001.2101.3001.6650.1&amp;utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_aa&amp;depth_1-utm_source=distribute.pc_relevant.none-task-blog-]]></description><category></category></item><item><title><![CDATA[python求链表中的循环头节点（快慢指针方法）]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122645975</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122645975</guid><author>EMIvv</author><pubDate>Sat, 22 Jan 2022 23:46:03 +0800</pubDate><description><![CDATA[class LinkNode():
    def __init__(self,value = None):
        self.value = value
        self.next = None

def Creat_Link_Tail(lst):
    L = LinkNode(lst[0])
    first_node = L
    for i in range(1, len(lst)):
        if type(lst[i]) == int:
            p]]></description><category></category></item><item><title><![CDATA[python求二叉树深度（递归）]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122645687</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122645687</guid><author>EMIvv</author><pubDate>Sat, 22 Jan 2022 23:18:33 +0800</pubDate><description><![CDATA[def tree_deep(root):
    if not root:
        return 0 #说明上一个节点是叶子节点，开始逐步返回
    left, right = 0, 0
    if root.left:
        left = tree_deep(root.left) #左子树递归
    if root.right:
        right = tree_deep(root.right) #右子树递归
    return max(left, right) + 1 ]]></description><category></category></item><item><title><![CDATA[python实现快速幂]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122644994</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122644994</guid><author>EMIvv</author><pubDate>Sat, 22 Jan 2022 22:23:29 +0800</pubDate><description><![CDATA[原理可参考：https://blog.youkuaiyun.com/qq_19782019/article/details/85621386
'''
@param base 底数
@param power 指数
@return res 求幂结果的最后3位数 
'''
def fast_power(base, power):
    res = 1
    while power &gt; 0:
        if power % 2 == 1:
            res = res * base % 1000
]]></description><category></category></item><item><title><![CDATA[tensor.narrow()函数]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122590890</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122590890</guid><author>EMIvv</author><pubDate>Wed, 19 Jan 2022 22:01:52 +0800</pubDate><description><![CDATA[input.narrow(dimension, start, length) → Tensor
  # 表示取变量input在第dimension维上，从索引start到start+length范围（不包括start+length）的值。
example:
In [2]: x = torch.Tensor([[1,2,3], [4,5,6], [7,8,9]])
In [4]: x.narrow(0,0,3)
Out[4]: 
tensor([[1., 2., 3.],
        [4., 5., 6]]></description><category></category></item><item><title><![CDATA[Pytorch view和permute的区别]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122587592</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122587592</guid><author>EMIvv</author><pubDate>Wed, 19 Jan 2022 19:12:43 +0800</pubDate><description><![CDATA[a = torch.tensor([[[1,2,3],[4,5,6]]])
b = a.view(3,2)
c = a.permute(0,2,1)
print(a.size(),a)
print(b.size(),b)
print(c.size(),c)

结果：
a: torch.Size([1, 2, 3]) 
tensor([[[1, 2, 3],
         [4, 5, 6]]])
b: torch.Size([3, 2]) 
tensor([[1, 2],
        [3, 4],]]></description><category></category></item><item><title><![CDATA[Cross Entropy Loss Function（交叉熵损失函数）理解]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122556937</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122556937</guid><author>EMIvv</author><pubDate>Tue, 18 Jan 2022 11:51:01 +0800</pubDate><description><![CDATA[转自https://zhuanlan.zhihu.com/p/35709485


]]></description><category></category></item><item><title><![CDATA[深度学习模型FLOPs详解]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122516734</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122516734</guid><author>EMIvv</author><pubDate>Sun, 16 Jan 2022 11:56:20 +0800</pubDate><description><![CDATA[计算方法
FLOPS:
注意全大写，是floating point operations per second的缩写，意指每秒浮点运算次数，理解为计算速度。是一个衡量硬件性能的指标。
FLOPs :
注意s小写，是floating point operations的缩写（s表复数），意指浮点运算数，理解为计算量。可以用来衡量算法/模型的复杂度。其计算公式如下：

不能只用FLOPs作为网络速度的指标
原因：FLOPs没有考虑几个对速度有相当大影响的重要因素——MAC\并行度\平台
1.MAC（Memory ]]></description><category></category></item><item><title><![CDATA[pytorch的dataset用法详解]]></title><link>https://blog.youkuaiyun.com/EMIvv/article/details/122509392</link><guid>https://blog.youkuaiyun.com/EMIvv/article/details/122509392</guid><author>EMIvv</author><pubDate>Sat, 15 Jan 2022 15:51:21 +0800</pubDate><description><![CDATA[torch.utils.data 里面的dataset使用方法
当我们继承了一个 Dataset类之后，我们需要重写 len 方法，该方法提供了dataset的大小； getitem 方法， 该方法支持从 0 到 len(self)的索引

from torch.utils.data import Dataset, DataLoader
import torch

class MyDataset(Dataset):
    """
        下载数据、初始化数据，都可以在这里完成
    """

 ]]></description><category></category></item></channel></rss>