赞
踩
一、VIT简介
ViT是2020年Google团队提出的将Transformer应用在图像分类的模型 但是因为其模型“简单”且效果好,可扩展性强。
二、运行代码前服务器准备
代码需要在服务器上运行,因此我们需要准备一个服务器,并在服务器上配置好conda的虚拟环境和pytorch上安装好spikingjelly的包。
我们需要有一个服务器的账号,这里使用的xshell7(也可使用window自带的远程桌面进行服务器连接),本文以xshell7进行示范:
添加服务器连接:
在主机和端口分别输入其相应的服务器地址与端口号,然后点击“用户身份验证”,在其中输入分配的服务器个人账号。
然后连接即可。
注意:连接服务器可能需要使用到相应的vpn。
成功连接上服务器。
接下来需要在服务器上配置虚拟环境
注意:为了服务器安全,一般服务器关闭网络功能,所以需要我们使用scp将文件下载好后上传到服务器,这里我所使用的是与xshell配套的xftp进行文件传输。
详细过程可参考:
Ubuntu20.04安装pytorch(包括安装Anaconda和虚拟环境配置以及安装包spikingjelly)_火锅店的保安长的博客-CSDN博客_ubuntu安装pytorch
在配置好虚拟环境之后,需要再安装一个eniop包(操纵张量-通过灵活而强大的张量操作符提供易读并可靠的代码),即可运行VIT代码。
三、代码运行
在服务器上运行Vit代码:
四、代码详解
1.Add 残差块(类似于resNet结构,将forward(x)+x作为非线性输入)
- #残差模块,放在每个前馈网络和注意力之后
- class Residual(nn.Module):
- def __init__(self, fn):
- super().__init__()
- self.fn = fn
-
- def forward(self, x, **kwargs):
- return self.fn(x, **kwargs) + x
作用:可以缓解梯度弥散和梯度破坏,解决网络退化等问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。