复现论文《SPIKING CONVOLUTIONAL NEURAL NETWORKS FOR TEXT CLASSIFICATION》
前言记录一下复现论文《SPIKING CONVOLUTIONAL NEURAL NETWORKS FOR TEXT CLASSIFICATION》的过程,以免就调包感觉自己什么也没干。不建议一步一步跟着我的步骤做,这个是实况,建议跳着看看再参考着做
论文概况借助工具,大概对此篇的论文的认识如下
这篇文章探讨了使用脉冲神经网络(SNN)进行自然语言处理任务的可行性,以实现比深度神经网络更节能的效果。虽然SNN已被证明在视觉任务中可产生具有竞争力的结果,但由于以脉冲形式表示单词和处理变长文本的困难,对于它们在自然语言处理(NLP)任务中的有效性的研究还很少。作者提出了一种“转换+微调”的两步法来训练SNN进行文本分类,并提出了一种编码预训练词嵌入为脉冲训练的有效方法,使SNN能够利用来自大量文本数据的词嵌入。实证结果表明,经过所提出的方法训练的SNN在能源消耗更少的情况下能够实现与其DNN同行竞争的结果,并且它们也更具对抗性。该研究是在英语和中文语言的文本分类任务中展示SNN有效性的首批研究之一,并突显了转换方法和微调阶段中的代用梯度作为该领域的一个关键贡献。
在论文的末尾,找到作者开源的 ...
复现论文ChineseBERT(ONTONOTES数据集)
记录一下自己复现论文《ChineseBERT: Chinese Pretraining Enhanced by Glyph and Pinyin Information》的过程,最近感觉老在调包,一天下来感觉什么也没干,就直播记录一下跑模型的过程吧
自己电脑环境如下:
显卡:3060TI
CUDA : 11.0
CUDAToolkit : 8.0.2
tensorflow : 2.4.0
pytorch : 1.7.0
首先使用Conda创建一下项目的虚拟环境
conda create -n ChineseBERT python=3.8
进入环境
conda activate ChineseBERT
用Pycharm打开项目并切换到刚刚新建的环境
找到requirements.txt文件,在环境中一个一个安装
安装的时候,发现torch版本装不到这么低的
然后就装了项目简介中的版本,(发现自己要跑的OntoNotes 4.0数据集正好也需要装这个版本,nice)
pip install torch==1.7.1+cu101 torchvision==0.8.2+cu101 ...
Win11+3060Ti配置Anaconda+Cuda+Pytorch+Tenserflow环境
之前搞了一个月左右时间用WSL2跑模型,后来发现还是不太习惯(其实用不明白),就转成Windows了。这次也是记录一下自己配环境的过程,以免下次还需要
安装Anaconda下载方式
Anaconda官网
清华镜像下载
tip:安装的时候注意尽量不要安装到C盘,选择Install for All Users,其他的一路next就行
之后配置一下环境变量,配置好如图所示,具体细节可以参考这篇博客
验证是否成功配置好在cmd中输入下列代码验证是否安装成功
conda -V
添加镜像源添加清华的镜像源,在Anaconda Prompt中输入下列代码
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.ts ...
hexo部署到Gitee后显示404||没有更新
在Gitee开启了Gitee Pages,并且本地完成了
hexo cleanhexo g -d
然后发现已经上传到了Gitee仓库里,但是访问博客的网址却显示404
有以下两种可能的原因:
hexo根目录下的_config.yml文件里,url没有配置对
如果仓库名和Gitee的用户名不一致时,root属性也需要修改。
比如用户名为xxx新建的仓库地址为
https://gitee.com/xxx/myblog
则以上内容需要修改为
url: https://xxx.gitee.io/root: /myblog
没有手动再部署一遍!!!是的你没有听错,这个居然上传成功后还需要手动再更新一下!
WSL命令行操作笔记
记录一下这段时间在WSL2上学习conda以及ubuntu的命令行指令,以便以后直接粘贴复制
1.wsl相关创建用户usernameuseradd username
给已创建的用户username设置密码passwd username
修改用户这个命令的相关参数usermod --help
删除用户usernameuserdel username
删除用户username所在目录rm -rf username
用户切换切换到rootsudo -s
切换到用户usernamesu usernameeg:su ubuntu22
首先查看所有分发版本wsl -l --all -v
关闭WSL2wsl --shutdown
2.Conda相关切换环境conda activate cu118py310
conda activate tensorflow
conda activate NER
conda activate torch
查看并删除环境查看环境列表conda info --env
删除环境conda remove -n 环境名 --alleg:conda remove -n cod ...
王道数据结构 线性表 链式存储小结
1.单链表
头插法图解:
待插入的next指向头结点原本指向的结点
修改头结点的next指向待插入结点
插入完毕代码实现
//设带插入结点为SS->next=head->next;head->next=S;
尾插法图解
将待插入结点的next域设为NULL
将最后一个结点的next域指向带插入结点
插入完毕代码实现
//设插入结点为Shead->next=S;head=S;
在中间插入图解
将待插入结点的next域指向插入结点位置的前驱结点指向的后一个结点
将原本位置上之前的结点指向待插入结点
插入完成
代码实现
//设待插入结点为S//待插入位置的前驱结点为preS->next=pre->next;pre->next=S;
在中间删除图解
将待删除结点的前一个结点的next指向待删除结点next的结点
删除待删除结点
删除完成
代码实现
//设待删除前驱结点为pre//待删除结点为Spre->next=S->next;delete S;
原地逆置链表
将头结点与后面的结点断开,然后重新用头插法插入
使用三个指 ...
斐波那契数列 C_C++
用三种方法实现:
带备忘录的递归
dp迭代
迭代优化,空间复杂度为O(1)
#include <cstdio>#include <iostream>#include <vector>using namespace std;#define _for(i,a,b) for(int i=(a);i<=(b);i++)//备忘录int helper(vector<int>& memo, int n) { //base case if (n == 2 || n == 3) { return 1; } if (memo[n] != 0) { return memo[n]; } else { memo[n] = helper(memo, n - 1) + helper(memo, n - 2); return memo[n]; }}//带备忘录法int fib_1(int N) { if (N <= 1) { retur ...
算法期末复习
用思维导图整理了一下算法的基本知识
算法概述
递归与分治策略
动态规划
贪心算法
回溯法
分支限界法
PDF文件(内有超链接)
参考资料:
算法中的P问题、NP问题、NP完全问题和NP难问题
分治法之棋盘覆盖问题
排序之归并排序
教你彻底学会动态规划——入门篇
矩阵连乘
最小生成树的两种方法(Kruskal算法和Prim算法)
循环赛日程表(分治法)
最后推荐一个算法可视化的网站VisuAlgo
软件体系结构基本知识——期末复习
根据老师画的重点做了一些思维导图,希望可以帮到需要的人
第一章
第二章
第三章
第四章
第六章
第七章
第八-九章
PDF文件
做得如有不足,敬请谅解~
图的邻接表表示转换成邻接矩阵
算法思想:先初始化邻接矩阵。依次遍历各个顶点的边表,根据边表中记录的“改弧所指向的顶点的位置”修改邻接矩阵arc[i][j]的值。例如遍历第 i 行的时候(当前的顶点所在行数为 i ),依次遍历该顶点的边表结点,若当前顶点的弧顶点的位置为j,则arc[i][j] = 1
创建如下的图:
全部代码如下:
#include <iostream>using namespace std;#pragma region 创建邻接表存储的无向图#define MaxVertexNum 100 //图中顶点数目最大值#define VertexType char#define _for(i,a,b) for(int i=(a);i<(b);i++)typedef struct ArcNode { //边表结点 int adjvex; //该弧所指向的顶点的位置 ArcNode* next; //指向下一条弧的指针}ArcNode;typedef struct VNode { / ...