- 博客(517)
- 资源 (10)
- 收藏
- 关注

原创 A Model-Driven Deep Learning Method for Normalized Min-Sum LDPC Decoding
来源Q. Wang, S. Wang, H. Fang, L. Chen, L. Chen and Y. Guo, “A Model-Driven Deep Learning Method for Normalized Min-Sum LDPC Decoding,” 2020 IEEE International Conference on Communications Workshops (ICC Workshops), Dublin, Ireland, 2020, pp. 1-6, doi: 10.1
2020-09-07 14:09:38
943

原创 每日强化学习
20200901强化学习阅读:https://blog.youkuaiyun.com/qq_30615903/article/details/80739243
2020-09-01 15:23:39
131

原创 Relation extraction文章
Others2018No.FigureTitleAuthorsPub.Links5CASREL:A Novel Cascade Binary Tagging Framework for Relational Triple ExtractionKun Ho Kim, Oisin Mac Aodha, Pietro PeronaCVPR 2018 (Spotlight)paper4[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xk
2020-06-12 07:58:29
820

原创 凸优化之内点法
Convex Optimization Stephen Boyd Department of Electrical Engineering Stanford University 第11章本文为笔者结合原书及博客https://blog.youkuaiyun.com/dymodi/article/details/46441783 记录自己相关解释原始问题原始问题对应的拉格朗日公式为:利用障碍函...
2020-04-05 11:37:35
1742

原创 GloVe: Global Vectors for Word Representation必记
关于算法原理参考:下面是Relation with skip gramskip gram:接下来在整个corPus 中训练:但在vast corpus 难以求所有的Qi,jQ_{i,j}Qi,j,采用近似但对于两分布中的交叉熵损失是有弊端的:即低概率高权值并且上式中的Qi,jQ_{i,j}Qi,j还是难以normalized,因此不归一化带来的问题是Qhat,Pha...
2020-03-04 11:41:32
229

原创 semi -supervised classification with graph convolutional networks学习必记
1 主要解决的问题半监督学习:用于少量节点标签未知,例如文本、citation network、知识图谱分类2 主要思想采用图卷积中的一阶局部近似(即K=1),这部分的理解可以参考Chebyshev多项式作为GCN卷积核当K=1 时有两个参数,模型scales linearly in the number of graph edges ,同时可以表征局部图结构和节点的特征:3. 半...
2020-02-19 14:27:03
380

原创 Convolutional Sequence to Sequence Learning学习心得
为什么使用CNN学习序列表示和RNN相比,CNN产生的背景向量固定并且通过stacking 可以使 contex size 更大,如下图。和RNN相比,CNN产生的背景向量固定并且通过stacking 可以使 contex size 更大,如上图。Hierarchy representation如图1,只需要三次CNN operation ,而需要 7 次 r...
2020-02-18 16:25:43
633

原创 Sequence to Sequence Learning with Neural Networks学习笔记
论文的主要创新点提出了序列到序列的学习方法提出的背景DNN的限制:输入和输出向量维度固定,实际上很多序列问题中的序列长度不是已知先验单个RNN 的限制:输入和输出等长,且要一一对齐且对齐已知,无法应用到输入输出不等长且对应关系为非montonic解决方案两个RNN理论可行一个负责将输入充列map 为固定大小的vector(背景向量,含有整个输入句子的信息),另一个RNN将背景向列...
2020-02-17 16:44:20
316

原创 Attention Is All You Need(Transformer )
今天是2020年2月1日,笔者学习了Attention Is All You Need(Transformer )论文,可以在sequence to sequence 模型中用multi head self -attention 代替RNN,可以并行计算输出,其中multi head 的作用可以集成不同的上下文attention,由于knowledge leve有限,代码层面有待学习...
2020-02-01 16:54:11
164

原创 自然语言处理(机器翻译IBM模型 系列)
机器翻译方法概述直接转换法基于规则的翻译方法基于中间语言的翻译方法基于语料库的翻译方法- 基于事例的翻译方法- 统计翻译方法- 神经网络机器翻译基于规则的翻译过程分成6个步骤:(a) 对源语言句子进行词法分析(b) 对源语言句子进行句法/语义分析© 源语言句子结构到译文结构的转换(d) 译文句法结构生成(e) 源语言词汇到译文词汇的转换(f ) 译文词法选择与生成...
2019-12-25 16:29:35
3684
原创 【Deepseek 学Cuda】double buffer 中涉及到全局内存到共享内存的搬运
asmvolatile::asmvolatile::asmvolatileasmvolatile学习double buffer 优化矩阵乘法, 看到了指令性的东西。
2025-04-03 11:04:37
343
原创 【deepseek】 学cuda 基于WMMA的半精度矩阵乘法(HGEMM)
难点在于划分warp。涉及三次划分warp。全局内存到共享内存如何划分warp?利用TensorCor 即wmma 接口实现16*16 矩阵相乘时,如何划分warp?将计算结果,写回全局内存,怎样划分warp 实现并行?这三次划分warp 可以独立的划分。原因在于,三次操作间已经__syncthreads()同步过了。代码中, 后两次划分warp方式可以保持一致。笔者学习过程中,对数据搬用划分可以方便理解。刚开始以为实现矩阵相乘时计算时warp的划分要和搬运保持一致,理解了一会儿。
2025-04-02 11:27:01
401
原创 【Deepseek 学投机推理】Sequoia
L40 GPU的卸载场景中 ,Llama2-70B模型的推理延迟可降低至0.56秒/标记 ,而当前最先进的卸载系统(如DeepSpeed-Zero-Inference [2])的延迟为5.5秒/标记,Huggingface Accelerate [16, 45] 的CPU卸载API则高达11秒/标记。在此,我们回顾基于树的推测解码方法。具体而言,我们将讨论现有方法如何选择推测树的结构(第2.1节)、其用于采样与验证标记树的算法(第2.2节),以及这些方法如何自动选择标记树形状(第2.3节)。
2025-03-31 11:04:15
678
原创 【DeepSeek学C++】移动构造函数
静态成员属于类本身,而非静态成员属于类的每个实例。因此,当移动一个对象时,静态成员并不属于对象实例的一部分,所以不需要移动。移动操作是针对对象实例的,所以只处理非静态成员。接下来,用户可能需要具体的例子来理解这一点。例如,如果有类中包含静态成员变量,移动操作不会去处理它,因为静态成员是所有实例共享的,移动一个实例不会影响其他实例的静态成员值。
2025-03-28 17:23:33
1089
原创 【deepseek 学c++】weakptr引用场景
std::weak_ptr 是 C++ 中与 std::shared_ptr 配合使用的智能指针,它本身不拥有资源的所有权,仅观察资源的状态,主要用于解决 shared_ptr 的循环引用问题和临时访问共享资源的需求。以下是 weak_ptr 的典型应用场景和核心价值:!
2025-03-27 17:14:47
268
原创 【Deepseek 学c++】再谈shred_ptr 多重控制块问题
当 ConcreteTask::execute 调用 getSharedThis() 时,会生成一个新的 shared_ptr,其控制块与原 task 的控制块独立。任务完成时,scheduler 持有的 task 和回调中的 shared_ptr 指向同一对象但属于不同控制块,导致对象被重复释放。正确实现:使用 enable_shared_from_this。错误实现:直接使用 this。
2025-03-27 12:23:59
323
原创 【DeepSeek学C++】shared_ptr学习
shared_ptrshared_ptr本身是一个对象,通常包含两个指针:一个指向被管理的对象,另一个指向控制块。控制块包含引用计数、弱引用计数以及可能的删除器等。当创建shared_ptr时,控制块会被动态分配,或者如果使用make_shared,可能会将对象和控制块分配在同一块内存中。用户提到“&a是A类对象的地址吗”,这里需要明确区分shared_ptr对象本身的地址和它管理的对象的地址。
2025-03-27 11:42:27
559
原创 【DeepSeek 学c++】dynamic_cast 原理
用于向下转化。父类引用指向指类对象假设父亲是a, 子类是b.子类对象A* pa 父类引用指向子类对象,那么向上转化 Apa = pb 这个是自动完成的,隐式转化,不需要dynamic_cast向下转化指的是Apa = new B。这个是指向子类对象的父类引用, 转化为子类引用总结就是 父类 向下转化为子类, 但是父类指针本身是指向子类的。而不是说指向父类的指针转化为指向子类的指针,这个是无法转的。
2025-03-21 17:30:33
939
原创 【DeepSeek学C++】移动构造函数
首先,str是一个普通的string对象,然后通过std::move(str)将其转换为右值引用,赋值给r。但需要注意的是,虽然r是右值引用类型,但它本身是一个左值,因为它有名字。也就是说,当使用r的时候,它实际上是一个左值,尽管它的类型是右值引用。根据C++的标准,当用一个左值来初始化对象时,如果该左值的类型是右值引用,那么它会被视为左值,所以这里会调用拷贝构造函数,而不是移动构造函数。为了验证这一点,我可以考虑强制将r转换为右值,比如使用std::move®,这时候就会调用移动构造函数。
2025-03-20 23:02:52
220
原创 【DeepSeek 学C+】effective modern c+ 条款七 初始化
C++的One Definition Rule(ODR),即每个变量只能有一个定义。类内的声明只是告诉编译器有这个变量存在,但实际的内存分配必须在一个翻译单元中完成。这样做的原因是为了避免重复定义,确保所有使用该静态变量的地方都引用同一个实例。
2025-03-20 22:15:48
377
原创 【DeepSeek学C++】 effective modern C++第33条款
等价于auto x = 10。x 是左值类型 , x 推到为int当参数声明为auto x时,无论传入的是左值还是右值,x在内部都会变成具名左值。这个问题涉及到C++中的值传递机制和左值/右值的概念左值和右值的基本定义。左值是指有持久状态的对象,可以取地址的,比如变量名、解引用的指针等。右值则是临时对象,比如字面量或表达式的结果,它们通常无法取地址,生命周期短暂。当函数参数按值传递时,不管是左值还是右值,参数都会被拷贝或移动到函数内部的变量中。这时候,这个内部变量是一个具名的变量,也就是左值。
2025-03-20 21:14:59
278
原创 [Deepseek 学c++]初始化捕获与按值(显式与隐式)捕获傻傻分不清
注意以上说法不对。!相当于在lambda函数体中加了一个新的变量auto &a, 其初值为函数作用域内的 static int a;引用,对新的a操作实际还是修改的是static int a相当于 lambda函数体中加了一个新的变量 auto a, 其初值为外部的 static int a;操作是新的a。
2025-03-20 16:58:23
437
原创 【Deepseek 学C++】线程池
此时锁仍然被持有,所以当工作线程被唤醒后,它们会尝试获取锁,但由于锁还在EnqueueTask中持有,所以工作线程需要等待锁释放后才能继续执行。因此,notify_one是在锁释放之前调用的。所以回答用户的问题:锁的释放是在condition.notify_one()之后,因为unique_lock的析构是在函数返回时,而notify_one是在析构之前调用的。根据C++标准**,调用notify_one不需要持有锁,但通常建议在修改条件变量相关的共享状态后,先解锁再通知,以避免唤醒的线程立即阻塞**。
2025-03-19 17:42:16
846
原创 【大模型推理】
ORCA: A Distributed Serving System for Transformer-Based Generative Models 作者里面讲的很不错。
2025-03-14 16:02:01
362
原创 【Deepseek C++】std:function 内部实现
l详ambda的类型是唯一的,每个lambda表达式都有不同的类型,所以必须通过decltype来获取类型,并在构造时传入该lambda的实例。,因为如果lambda有捕获,它的类型将包含捕获的内容,这可能导致无法作为模板参数使用。因此,在示例中应该使用无捕获的lambda。详细解释std::function 内部实现的多态机制。可以以lambda 表达式的形式给出嘛。初始化捕获, 引用捕获,值捕获区。lambda 表达式底层实现。5. 实现深拷贝的核心代码。
2025-03-01 11:44:09
269
原创 【DeepCeek 学多线程】条件变量和互斥
谓词是一个可调用对象(如函数、Lambda 表达式等),它返回一个布尔值,用于检查某个条件是否成立。return!
2025-02-20 12:34:25
1087
原创 【DeepSeek C++】为什么要将基类构造函数设置成protected
例如,如果基类的构造函数是protected的,那么派生类的构造函数在调用基类构造函数时需要显式地使用Base::Base(),而不能隐式调用。总结来说,基类构造函数设置为protected是一种设计选择,用于控制类的实例化和继承关系,确保基类不能被直接创建,只能通过派生类来使用。如果基类的构造函数是public的,那么任何地方都可以直接创建基类的实例。总的来说,基类构造函数设置为protected是一种设计选择,用于控制类的实例化和继承关系,确保类的使用符合设计意图,并提高代码的封装性和安全性。
2025-02-19 17:19:31
721
原创 【DeepSeek 学C++】std::atomic 用于线程控制,和内存强顺序一致性
所有线程看到的操作顺序是一致的:即所有线程对内存的操作(读/写)看起来是按照某种全局顺序执行的。每个线程的内部操作顺序保持不变: 即每个线程内部的代码执行顺序不会被重排。换句话说,顺序一致性保证了多线程程序的行为就像所有线程的操作被串行化(一个接一个地执行)一样,且每个线程的操作顺序与代码中的顺序一致。顺序一致性是最强的内存顺序模型,保证了多线程程序的行为符合一种全局一致的顺序。它避免了指令重排,并确保所有线程对内存的修改是全局可见的。顺序一致性虽然易于理解和推理,但可能会牺牲一些性能。
2025-02-19 14:45:49
695
原创 【DeepSeek学习CUDA】#define FETCH_FLOAT4(pointer) (reinterpret_cast<float4*>(&(pointer))[0]) 什么意思
是一个宏定义,用于将特定内存区域的数据解释为float4类型。以下是详细解析。
2025-02-13 16:56:30
738
原创 【DeepSeek学Cuda】矩阵转置:行读取优先还是列读取优先。
场景推荐实现原因禁用L1,启用L2缓存实现A按行读取利用L2缓存空间局部性,减少全局内存访问;写入劣势可部分优化。矩阵极小(完全适配L2)实现AL2缓存完全覆盖数据,连续读取优势最大化。矩阵极大(超出L2容量)实现B带宽效率(写入合并)主导性能,非连续读取的劣势相对降低。Kepler GPU架构实现AL2缓存直接管理全局内存,按行读取仍优于非连续读取。最终建议:在大多数情况下(尤其是中小型矩阵),实现A(按行读取,按列存储)在禁用L1但启用L2缓存时表现更优。
2025-02-11 11:17:32
1012
原创 【DeepSeek学Cuda】NVidia GPU指令集架构-Load和Cache
当warp内的线程访问同一个constant位置时,其是确定的latency的(和访问寄存器一样) latency 什么意思。
2025-02-10 20:21:04
516
模拟通信中信号角度的调制与解调
2018-04-20
labview实例
2018-03-18
MATLAB频谱图
2018-03-18
电容振荡器
2018-03-18
小功率调幅发射机
2018-03-18
电子线路课程设计
2018-03-18
小功率调幅发射机仿真报告
2018-03-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人