
学习笔记
文章平均质量分 69
ru-willow
嗑研dog
展开
-
Attention Bottlenecks for Multimodal Fusion论文阅读笔记
Attention Bottlenecks for Multimodal Fusion论文阅读笔记一、相关信息1、论文名称: Attention Bottlenecks for Multimodal Fusion2、论文地址: https://arxiv.org/pdf/2107.00135v1.pdf3、引用方式:@article{nagrani2021attention, title={Attention bottlenecks for multimodal fusion}, auth原创 2021-10-19 16:33:47 · 3247 阅读 · 1 评论 -
论文阅读笔记:遥感融合综述
More Diverse Means Better: Multimodal Deep Learning Meets Remote-Sensing Imagery Classification论文题目:More Diverse Means Better: Multimodal Deep Learning Meets Remote-Sensing Imagery Classification论文链接:https://ieeexplore.ieee.org/document/9174822引用方式:@AR原创 2021-08-16 15:50:27 · 1179 阅读 · 0 评论 -
论文阅读笔记:SAR个光学图像的去云融合
Cloud Removal with Fusion of High Resolution Optical and SAR Images Using Generative Adversarial Networks论文题目:Cloud Removal with Fusion of High Resolution Optical and SAR Images Using Generative Adversarial Networks论文链接:https://www.mdpi.com/2072-4292/12/原创 2021-08-13 10:50:18 · 2344 阅读 · 0 评论 -
非负矩阵分解小白入门
非负矩阵分解一、定义非负矩阵分解(Nonnegative Matrix Factorization),简称NMF。顾名思义就是,将非负的大矩阵分解成两个非负的小矩阵。它使分解后的所有分量均为非负值(要求纯加性的描述),并且同时实现非线性的维数约减。在RnR^nRn空间分布的一堆数据有它们分布的某些规律,那么找一组更能直观反映这种规律的基,再把原来的数据投影到这组基上表示,这样就能便于后续的应用,比如分类等。上式VVV是一个n∗mn*mn∗m维的矩阵,其中每一列就是RnR^nRn空间中的一个向量,共原创 2021-07-31 16:44:26 · 4518 阅读 · 2 评论 -
HS和SAR的融合总结
HS和SAR的融合总结一、传统的方法:首先生成一个融合图像,然后再对其进行手工的特征提取和分类。1、成分替换:替换的成分仍然还有部分光谱信息,融合图像会存在光谱扭曲现象。① IHS+DWT② PCA和HSV具体的操作如下所示:③ HSV2、多分辨率分析:高低频的融合策略影响着融合图像的质量二、基于深度学习的方法用两个不同的网络分别提取各自的特征,然后对其进行直接级联融合,最后再进行分类。这种方法简单粗暴。三、目前存在的问题1、类内差异大,类间差异小:如何降低类内差异,增大类原创 2021-07-31 11:06:49 · 617 阅读 · 0 评论 -
Generic Attention-model Explainability for Interpreting Bi-Modal and Encoder-Decoder Transformers
阅读论文笔记:Generic Attention-model Explainability for Interpreting Bi-Modal and Encoder-Decoder Transformers论文名称: Generic Attention-model Explainability for Interpreting Bi-Modal and Encoder-Decoder Transformers论文链接: https://arxiv.org/abs/2103.15679代码链接: ht原创 2021-07-29 20:58:40 · 1195 阅读 · 0 评论 -
Transformer小白入门
Transformer小白入门一、举例说明Transformer的整体工作原理\quad 首先将这个模型看成是一个黑箱操作。在机器翻译中,就是输入一种语言,输出另一种语言。\quad 那么拆开这个黑箱,我们可以看到它是由编码组件、解码组件和它们之间的连接组成。\quad 编码组件部分由一堆编码器(encoder)构成(论文中是将6个编码器叠在一起——数字6没有什么神奇之处,你也可以尝试其他数字)。解码组件部分也是由相同数量(与编码器对应)的解码器(decoder)组成的。\quad 最后一层原创 2021-07-26 10:46:18 · 3398 阅读 · 2 评论 -
论文阅读笔记:Remote Sensing Image Change Detection With Transformers
论文阅读笔记:Remote Sensing Image Change Detection With Transformers论文题目: Remote Sensing Image Change Detection With Transformers论文链接:https://ieeexplore.ieee.org/document/9491802代码链接:https://github.com/justchenhao/BIT_CD引用方式:@Article{chen2021a, title={R原创 2021-07-24 15:28:05 · 3756 阅读 · 29 评论 -
论文阅读笔记:Spatial-Spectral Transformer for Hyperspectral Image Classification
Spatial-Spectral Transformer for Hyperspectral Image Classification论文题目: Spatial-Spectral Transformer for Hyperspectral Image Classification下载链接: https://www.researchgate.net/publication/348804892_Spatial-Spectral_Transformer_for_Hyperspectral_Image_Cla原创 2021-07-22 21:20:13 · 4125 阅读 · 6 评论 -
论文阅读笔记:多模态的融合数据和方法
论文题目: Multimodal remote sensing benchmark datasets for land cover classification with a shared and specific feature learning model论文链接: https://www.sciencedirect.com/science/article/pii/S0924271621001362?dgcid=rss_sd_all.代码链接:https://github.com/danfengho原创 2021-07-17 11:13:55 · 1585 阅读 · 0 评论 -
论文阅读笔记:SpectralFormer
论文题目: SpectralFormer: Rethinking Hyperspectral Image Classification with Transformers论文链接: https://arxiv.org/pdf/2107.02988.pdf.代码链接: https://sites.google.com/view/danfeng-hong.引用方式:@misc{hong2021spectralformer, title={SpectralFormer: Rethinking原创 2021-07-16 21:37:48 · 988 阅读 · 1 评论 -
论文阅读笔记:Learning Statistical Texture for Semantic Segmentation
论文阅读笔记:Learning Statistical Texture for Semantic Segmentation论文名称:Learning Statistical Texture for Semantic Segmentation论文地址:https://arxiv.org/pdf/2103.04133.pdf.代码链接:https://github.com/lanyunzhu99/Learning-Statistical-Texture-for-Semantic-Segmentation.原创 2021-07-10 20:21:19 · 2129 阅读 · 4 评论 -
【论文阅读】红外和可见光的融合
DIDFuse: Deep Image Decomposition for Infrared and Visible Image Fusion论文地址:https://arxiv.org/abs/2003.09210一、动机① 红外图像具有较强的穿透力,不受光照影响,而可见光具有较细的纹理信息和较高的空间分辨率。互补特性融合出高质量的图像。② 融合图像:突出显示辐射信息(亮度和对比度);详细的纹理信息(梯度和边缘);明确、完整、准确地描述目标二、方法2.1 训练:主要采用编码和解码网络来训练:双原创 2021-03-02 20:43:57 · 3412 阅读 · 4 评论 -
[论文阅读] RepVGG
[论文阅读] RepVGG论文地址:https://arxiv.org/abs/2101.03697代码地址:https://github.com/DingXiaoH/RepVGG作者单位:清华大学(丁贵广团队), 旷视科技(孙剑等人),港科大, 阿伯里斯特威斯大学一、主要思路① 为每一个3 ×\times× 3卷积层添加平行的1 ×\times× 1卷积分支和恒等映射分支,构成一个RepVGG Block;② 区别在于ResNet是每隔两层或三层加一个分支,而我们是每层都加;③ 将20多层3原创 2021-03-02 20:07:27 · 1102 阅读 · 0 评论 -
轮廓波-非下采样轮廓波NSCT
轮廓波-非下采样轮廓波NSCT1、定义a) NSCT变换主要由两部分组成:① 尺度分解的非下采样金字塔滤波器组(Non Subsampled Pyramid Filter Bank,NSPFB)② 方向分解的非下采样方向滤波器组(Non Subsampled Directional Filter Bank,NSDFB)b) NSCT也称作塔型滤波器组,它的实现结合了多方向分析和多尺度分析,属于一种多分辨、多局域、多方向的图像表示方法。2、分解过程3、应用① NSCT+CNN② N原创 2021-01-13 16:58:05 · 5391 阅读 · 24 评论 -
学术检索数据库总结
学术检索数据库总结一、中文数据库介绍1、中国知网期刊论文、博士论文、会议论文、学术的毕业论文等中国最主要的中文期刊、学位论文库之一。由清华大学、清华同方发起,始建于1999年6月。除了大量的医学文献以外,还有大量社科类文献资料,有助于医院管理及人文社科方面的资源获取。因为中国知网进入电子出版行业比较早,使用的人群基数比较大,大家都已经熟悉了中国知网的检索方式,并且中国知网在资源量方面也是排在前列的,使中国知网成为了中文必检数据库。2、万方数据库比知网小点在检索选项中,我们可以运用文本词检原创 2021-01-05 10:13:33 · 5541 阅读 · 1 评论 -
Python 魔法方法详解
Python 魔法方法详解详见:https://fishc.com.cn/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403原创 2020-12-25 20:01:03 · 248 阅读 · 0 评论 -
文件的打开模式和文件对象方法
文件的打开模式和文件对象方法1、文件的打开模式打开模式执行操作‘r’以只读方式打开文件(默认)‘w’以写入的方式打开文件,会覆盖已存在的文件‘x’如果文件已经存在,使用此模式打开将引发异常‘a’以写入模式打开,如果文件存在,则在末尾追加写入‘b’以二进制模式打开文件‘t’以文本模式打开(默认)‘+’可读写模式(可添加到其他模式中使用)‘U’通用换行符支持2、文件对象方法文件对象方法执行操作f.clo原创 2020-12-25 15:52:34 · 317 阅读 · 0 评论 -
os和os.path 模块中关于文件、目录常用的函数使用方法
1、os模块中关于文件/目录常用的函数使用方法函数名使用方法getcwd()返回当前工作目录chdir(path)改变工作目录listdir(path=’.’)列举指定目录中的文件名(’.‘表示当前目录,’…'表示上一级目录)mkdir(path)创建单层目录,如该目录已存在抛出异常makedirs(path)递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b’和’E:\a\c’并不会冲突remove(path)删除文件rmd原创 2020-12-25 15:42:43 · 400 阅读 · 0 评论 -
平衡二叉查找树:红黑树
平衡二叉查找树1、什么是平衡二叉查找树?二叉树中任意一个节点的左右子树的高度相差不能大于 1。从这个定义来看,上一节我们讲的完全二叉树、满二叉树其实都是平衡二叉树,但是非完全二叉树也有可能是平衡二叉树。平衡二叉查找树中“平衡”的意思,其实就是让整棵树左右看起来比较“对称”、比较“平衡”,不要出现左子树很高、右子树很矮的情况。这样就能让整棵树的高度相对来说低一些,相应的插入、删除、查找等操作的效率高一些。2、如何定义一棵“红黑树”红黑树中的节点,一类被标记为黑色,一类被标记为红色。除此之外,一棵红原创 2020-12-05 11:43:23 · 233 阅读 · 0 评论 -
二叉查找树
二叉查找树一、二叉查找树的概念二叉查找树要求,在树中的任意一个节点,其左子树中的每个节点的值,都要小于这个节点的值,而右子树节点的值都大于这个节点的值。1、二叉查找树的查找操作我们先取根节点,如果它等于我们要查找的数据,那就返回。如果要查找的数据比根节点的值小,那就在左子树中递归查找;如果要查找的数据比根节点的值大,那就在右子树中递归查找。public class BinarySearchTree { private Node tree; public Node find(int原创 2020-12-05 11:24:34 · 795 阅读 · 0 评论 -
树 && 二叉树
树 && 二叉树一、树1、基本概念A 节点就是 B 节点的父节点,B 节点是 A 节点的子节点。B、C、D 这三个节点的父节点是同一个节点,所以它们之间互称为兄弟节点。我们把没有父节点的节点叫做根节点,也就是图中的节点 E。我们把没有子节点的节点叫做叶子节点或者叶节点,比如图中的 G、H、I、J、K、L 都是叶子节点。2、树的高度、深度、层二、二叉树1、满二叉树和完全二叉树编号 2 的二叉树中,叶子节点全都在最底层,除了叶子节点之外,每个节点都有左右两个子节点,这种二原创 2020-12-05 10:49:15 · 121 阅读 · 0 评论 -
哈希算法
哈希算法一、什么是哈希算法?将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。二、哈希算法的设计要求?1、从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法)2、对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同3、散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小4、哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值三、哈希算法的应用?1、原创 2020-12-05 10:21:17 · 458 阅读 · 0 评论 -
散列表(下):为什么散列表和链表经常会一起使用?
为什么散列表和链表经常会一起使用?\quad散列表这种数据结构虽然支持非常高效的数据插入、删除、查找操作,但是散列表中的数据都是通过散列函数打乱之后无规律存储的。也就说,它无法支持按照某种顺序快速地遍历数据。如果希望按照顺序遍历散列表中的数据,那我们需要将散列表中的数据拷贝到数组中,然后排序,再遍历。\quad因为散列表是动态数据结构,不停地有数据的插入、删除,所以每当我们希望按顺序遍历散列表中的数据的时候,都需要先排序,那效率势必会很低。为了解决这个问题,我们将散列表和链表(或者跳表)结合在一起使用。原创 2020-12-04 16:41:33 · 115 阅读 · 0 评论 -
散列表(中):如何打造一个工业级水平的散列表?
散列表一、如何设计散列函数1、散列函数的设计不能太复杂过于复杂的散列函数,势必会消耗很多计算时间,也就间接地影响到散列表的性能。2、散列函数生成的值要尽可能随机并且均匀分布这样才能避免或者最小化散列冲突,而且即便出现冲突,散列到每个槽里的数据也会比较平均,不会出现某个槽内数据特别多的情况。3、散列函数举例数值分析法直接寻址法平方取中法折叠法随机数法二、如何有效地避免装载因子过大装载因子越大,说明散列表中的元素越多,空闲位置越少,散列冲突的概率就越大。不仅插入数据的过程要多次寻址或者原创 2020-12-04 16:24:48 · 131 阅读 · 0 评论 -
散列表(上):Word文档中的单词拼写检查功能是如何实现的?
散列表1、散列表的由来散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。2、散列函数的设计我们把参编号转化为数组下标的映射方法就叫作散列函数(或“Hash 函数”“哈希函数”),而散列函数计算得到的值就叫作散列值(或“Hash 值”“哈希值”)。散列函数设计的基本要求:★ 散列函数计算得到的散列值是一个非负整数;★ 如果 key1 = key2,那 hash(key1) == hash(key2);★ 如果 key1 ≠ key2,那原创 2020-12-04 09:55:20 · 224 阅读 · 0 评论 -
跳表
跳表1、跳表=链表+多级索引的结构原创 2020-12-03 20:18:58 · 114 阅读 · 0 评论 -
二分查找(下):如何快速定位IP对应的省份地址?
一、4种常见的二分查找变形问题变体一:查找第一个值等于给定值的元素public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = low + ((high - low) >> 1); if (a[mid] > value) { high = mid - 1; } els原创 2020-12-03 16:54:15 · 254 阅读 · 0 评论 -
二分查找(上):如何用最省内存的方式实现快速查找功能?
二分查找1、概念二分查找针对的是一个有序的数据集合,查找思想有点类似分治思想。每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为 0。我随机写一个 0 到 99 之间的数字,然后你来猜我写的是什么?2、时间复杂度为:O(logn)其中 n/2k=1 时,k 的值就是总共缩小的次数。而每一次缩小操作只涉及两个数据的大小比较,所以,经过了 k 次区间缩小操作,时间复杂度就是 O(k)。通过 n/2k=1,我们可以求得 k=log2n。最简单的情原创 2020-12-03 16:22:47 · 204 阅读 · 0 评论 -
排序优化:如何实现一个通用的、高性能的排序函数?
排序优化:如何实现一个通用的、高性能的排序函数?如何优化快速排序?(分区)1、三数取中法我们从区间的首、尾、中间,分别取出一个数,然后对比大小,取这 3 个数的中间值作为分区点。这样每间隔某个固定的长度,取数据出来比较,将中间值作为分区点的分区算法,肯定要比单纯取某一个数据更好。但是,如果要排序的数组比较大,那“三数取中”可能就不够了,可能要“五数取中”或者“十数取中”。2. 随机法随机法就是每次从要排序的区间中,随机选择一个元素作为分区点。这种方法并不能保证每次分区点都选的比较好,但是从概率的原创 2020-12-02 22:44:26 · 91 阅读 · 0 评论 -
线性排序:如何根据年龄给100万用户数据排序?
线性排序:如何根据年龄给100万用户数据排序?1、桶排序核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序。桶内排完序之后,再把每个桶里的数据按照顺序依次取出,组成的序列就是有序的了。2、计数排序计数排序其实是桶排序的一种特殊情况当要排序的 n 个数据,所处的范围并不大的时候,比如最大值是 k,我们就可以把数据划分成 k 个桶。每个桶内的数据值都是相同的,省掉了桶内排序的时间。假设只有 8 个考生,分数在 0 到 5 分之间。这 8 个考生的成绩我们放在一个数组 A[8]原创 2020-12-02 16:42:13 · 423 阅读 · 0 评论 -
如何用快排思想在O(n)内查找第K大元素?
如何用快排思想在O(n)内查找第K大元素?一、归并排序如果要排序一个数组,我们先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。我们申请一个临时数组 tmp,大小与 A[p…r]相同。我们用两个游标 i 和 j,分别指向 A[p…q]和 A[q+1…r]的第一个元素。比较这两个元素 A[i]和 A[j],如果 A[i]<=A[j],我们就把 A[i]放入到临时数组 tmp,并且 i 后移一位,否则将 A[j]放入到数组 tmp,j 后原创 2020-11-30 22:06:05 · 389 阅读 · 0 评论 -
冒泡、插入和选择排序算法
冒泡、插入和选择排序算法一、基本概念1、原地排序:空间复杂度是 O(1) 的排序算法2、排序算法的稳定性:如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变3、有序度:数组中具有有序关系的元素对的个数4、满有序度:完全有序的数组的有序度5、逆序度 = 满有序度 - 有序度二、排序算法1、冒泡排序\quad冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该原创 2020-11-30 11:33:33 · 231 阅读 · 0 评论 -
递归:如何找到“最终推荐人”?
递归:如何找到“最终推荐人”?一、递归二、递归需要满足的三个条件① 一个问题的解可以分解为几个子问题的解② 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样③ 存在递归终止条件三、为什么使用递归?递归的优缺点?1、优点2、缺点四、如何实现递归?1、递归代码编写2、迭代循环的非递归五、递归常见问题及解决方案1、警惕堆栈溢出2、警惕重复计算3、死循环六、如何找到“最终推荐人”?一、递归\quad递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍原创 2020-11-28 17:28:02 · 445 阅读 · 0 评论 -
如何实现浏览器的前进和后退功能?
如何实现浏览器的前进和后退功能?1、栈:后进者先出,先进者后出。栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。:不管是顺序栈还是链式栈,入栈、出栈只涉及栈顶个别数据的操作,所以时间复杂度都是 O(1)。2、顺序栈的动态扩容3、栈的应用※ 调用函数: 操作系统给每个线程分配了一块独立的内存空间,这块内存被组织成“栈”这种结构, 用来存储函数调用时的临时变量。每进入一个函数,就会将原创 2020-11-28 10:09:01 · 1941 阅读 · 0 评论 -
如何轻松写出正确的链表代码
如何轻松写出正确的链表代码?1、理解指针或引用的含义将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。p->next=q: p 结点中的 next 指针存储了 q 结点的内存地址。p->next=p->next->next: p 结点的 next 指针存储了 p 结点的下下一个结点的内存地址。2、警惕指针丢失和内存泄漏p->next = x; \quad \quad原创 2020-11-27 16:41:02 · 167 阅读 · 0 评论 -
数据结构与算法学习笔记5
如何实现最近最少使用策略(LRU)缓存淘汰算法?一、常见的缓存淘汰策略1、先进先出策略 FIFO2、最少使用策略 LFU3、最近最少使用策略 LRU二、五花八门的链表结构数组需要一块连续的内存空间来存储,对内存的要求比较高。如果我们申请一个 100MB 大小的数组,当内存中没有连续的、足够大的存储空间时,即便内存的剩余总可用空间大于 100MB,仍然会申请失败。链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以如果我们申请的是 100MB 大小的链表原创 2020-11-26 17:07:24 · 133 阅读 · 0 评论 -
数据结构与算法学习笔记4
为什么数组要从 0 开始编号,而不是从 1 开始呢?一、数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。1、线性表: 每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表, 比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。2、连续的内存空间和相同类型的数据:想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作。计算机会给每原创 2020-11-26 16:03:26 · 141 阅读 · 0 评论 -
数据结构与算法学习笔记3
时间复杂度的类别最好情况时间复杂度最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度例:在一个无序的数组(array)中,查找变量 x 出现的位置。如果没有找到,就返回 -1// n表示数组array的长度int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; } retur原创 2020-11-26 14:57:19 · 126 阅读 · 0 评论 -
数据结构与算法学习笔记2
复杂度分析一、时间复杂度分析1、举例说明例1 int cal(int n) { int sum = 0; int i = 1; for (; i <= n; ++i) { sum = sum + i; } return sum; }T(n) = (2n+2)unit_time例2 int cal(int n) { int sum = 0; int i = 1; int j = 1; for (; i <= n;原创 2020-11-26 14:53:04 · 137 阅读 · 0 评论