自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 flash_attention简要笔记

原来,attention部分的计算量和中间激活占用显存的复杂度都是ON2计算量部分原来QK矩阵乘和attn_score@V矩阵乘的计算量,复杂度都是ON2;中间激活因为中间有一个attn_score,所以复杂度也是ON2现在,attention部分的中间激活占用显存的复杂度变为ON,计算量的复杂度没有变但是通过减少访存加快了计算速度,而且fa与原attention完全等价。

2024-09-17 20:04:06 1742

原创 LLM时代的transformer参数量、计算量、激活值的分析

transformer的参数量的复杂度是Oh2lO(h^2l)Oh2l级别的,粗略估计可以认为是12h2l12h^2l12h2l或者4h3Ihl(4h+3I)hl4h3Ihl如果MLP是传统FFN那样的结构,calculated params=2Vh12h213hl2Vh12h213hl如果attention部分使用了GQA,则calculated params=2Vh10h211h2gah2。

2024-09-10 13:03:37 1199

原创 对pytorch optimizer中state_dict、state、param_groups的简要理解

state_dict():一个dict,里面有两个key(state:是一个defaultdict,包含的信息类似于。param_groups:是一个list,包含的信息类似于。

2024-07-25 00:38:11 1217 1

原创 记一次对链接、COMMON块、多重符号定义的理解

因为一个在链接阶段进行处理,一个在编译阶段进行处理,这也说明了如果有多个弱符号,最终选个最大的(?环境:两个程序均为C程序,当前GCC版本为7.5.0,Ubuntu18下。(袁春风《计算机系统基础》第二版176页,CSAPP第三版471页)《程序员的自我修养——链接、装载与库》3.5.5节,4.3节。前面a在COMMOM块中,现在a在放在了bss节中(然后进行链接,与链接顺序无关,所以最终应该输出4。也可能选占用空间最大的一个:应该是8(?尝试不同链接顺序:预计输出一个4,一个8。运行,输出都是4(?

2023-08-30 19:16:09 342

原创 记一次ubuntu16误删libc.so.6操作的恢复过程

某次操作中,误将libc.so.6的软链接更改,导致系统很多命令无法使用,而且后序系统无法启动;这里通过U盘启动将原系统恢复

2023-08-04 11:28:07 2586 1

原创 (统计)机器学习(和深度学习)部分术语

(统计)机器学习(和深度学习)部分术语

2022-10-26 20:46:32 297

原创 机器学习编译MLC 笔记 1-5章(上)

机器学习编译MLC 笔记 1-5章(上)

2022-10-23 22:06:00 1007

原创 优化PyTorch性能的一些trick

优化PyTorch性能的一些trick,不定期更新,如有错误还请指出

2022-10-13 20:18:38 744 1

原创 PyTorch显存机制简要分析

PyTorch显存机制简要分析,不定期更新,如有错误还请指出

2022-10-13 15:13:03 1163

原创 数据科学的统计学知识笔记

数据科学的统计学知识笔记

2022-10-11 22:02:46 828

原创 深度学习常用工具的部分操作(非linux)

深度学习常用工具的部分操作

2022-10-05 21:04:17 222

原创 Tmux 简单使用

tmux简单使用,如有错误还请指出

2022-09-15 09:14:07 2676

原创 深度学习常用linux命令和操作

深度学习常用linux命令和操作,持续更新,如有错误还请指出

2022-09-11 22:29:46 447

原创 jupyter notebook使用技巧(不定期更新)

jupyter notebook使用技巧(不定期更新)

2022-09-10 09:36:37 222

原创 python基础:廖雪峰的官方网站Python(部分)笔记

廖雪峰的官方网站Python部分笔记,,理解有限,如有错误还请指出

2022-08-22 01:39:17 1693

原创 linux笔记:MOOC Linux开发环境及应用

MOOC Linux开发环境及应用的(部分)笔记,理解有限,如有错误还请指出

2022-08-22 01:20:58 1037

原创 常用vim操作

常用vim操作,理解有限,如有错误还请指出

2022-08-21 23:54:18 738

原创 一个简单使用logging的例子

一个简单使用logging的例子(理解有限,如有错误还请指出)

2022-08-18 01:34:10 401

转载 在VScode中,代码提示左边的图标各自代表的含义

在Vscode中,代码提示左边的图标代表的含义

2022-08-17 19:41:58 864

原创 python import相关内容简单介绍

Python import简要介绍,理解有限,如有错误还请指出

2022-08-08 17:30:43 366

原创 csdn blog(或markdown) 特殊语法

csdn blog特殊语法,持续更新记录

2022-08-08 15:48:40 138

原创 pip简单介绍

pip简单介绍,理解有限,如有错误还请指出

2022-08-07 22:23:07 1593

原创 Python打包(构建)、分发、安装 简要介绍

python打包(构建)、发布、安装简要介绍,如果错误还请指出

2022-08-07 11:56:55 1671

原创 Python运行过程简单介绍

从较高层次对Python运行过程简单介绍(理解有限,如果错误还请指出)

2022-08-07 03:07:35 2497

原创 为什么没有将多项式作为激活函数

为什么没有将多项式作为激活函数

2022-06-10 20:20:03 1093

原创 手推MLP反向传播过程 + 含有dropout的MLP反向传播过程

手推MLP反向传播过程+含有dropout的MLP反向传播过程

2022-06-06 21:46:17 683

原创 LeetCode 84:柱状图中最大的矩形(困难)

LeetCode 84:柱状图中最大的矩形解答这两道单调栈的题目需要好好反思一下,为什么思路大体正确但是都没有做出来代码一思路一模仿接雨水中双指针的方法,接雨水中是要找到 val 左右两侧中最高的柱子,取min得到水平面高度本题中是要找到val 往左往右拓展, 尽可能往左/往右 大于等于 val的柱子索引,这个就是计算宽度,高度就是val好像都是根据val, 找到宽的制约因素。这个思路自己想出来了,但是没有写代码,因为最坏情况复杂度为O(n^2),但下面的代码没超时,class

2022-02-01 11:36:47 1275

原创 LeetCode 239: 滑动窗口最大值(困难)

LeetCode 239: 滑动窗口最大值解答代码一:大根堆最好的解法是单调队列,但是一开始想的是大根堆问题在于如何将滑动窗口移出的元素从大根堆中删除,大根堆只能pop,没法移除特定的元素。这里就陷入了困境。解决方法是判断top是否在滑动窗口内,因此要将下标放入大根堆中,判断top->second是否大于i-k滑动窗口的大小永远小于等于k,但是这里大根堆的大小最坏情况是O(n),自己没有想到上面的转换,很大程度上我就是既想删除移出的元素,又想保持大根堆元素小于等于k,陷入了困境。现在

2022-01-31 17:07:18 693

原创 LeetCode 42: 接雨水(困难)

LeetCode 42: 接雨水解答这个题需要好好分析一下,自己的思路离单调栈的标准答案就一步之遥了,就是没想出来,最近有点颓md,代码一:单调栈主要分析一下为什么自己的思路大体方向是正确的,但就是差最后一步。首先,分析出来只有凹槽结构才能接雨水,单调栈处理每个凹槽结构,这个没问题。接下来,应该按照行计算,我前面按照行的思路思考,但是后面却按照列的思路累加凹槽,想着对每个凹槽确定左右界限,列累加,杂糅了单调栈和动规,越写越乱。没有想到到底是按行计算还是按列计算,导致后面越写越乱。 根本原因还

2022-01-30 20:50:51 1347

原创 LeetCode 503: 下一个更大元素 II

LeetCode 503: 下一个更大元素 II解答单调栈,但中间有一些小细节需要注意代码一这里需要特别注意的是单调栈中存的是值还是下标索引,如果存值的话(有时候写起来会简单一些),需要搭配map的(val, idx)映射,适合用于数组中没有重复值的情况;如果存下标索引的话,感觉这个更通用,但是有的题存值更方便一些这个题目因为数组中有重复值,数组中重复值的nxtGreaterElem很可能不同,不能用存值的方法。还有就是拿一个比较典型的例子来初步验证想法,比如一开始想的是两个数组拼起来+map

2022-01-30 13:32:25 905

原创 LeetCode 496:下一个更大元素 I

LeetCode 496:下一个更大元素 I解答单调栈+哈希,这里记录一下两种顺序相反的实现方式:顺序遍历和逆序遍历数组都可以,但是逻辑变化代码一记录nums1中(val, idx)的映射从左到右遍历nums2,now=nums2[i]在now > st.top()部分中,now是出栈元素的nextGreater, 从当前值now 确定以当前值now为nextGreater的元素 (根据nextGreater确定元素), 出栈元素找到了nextGreater,查表这里的单调栈是单调递

2022-01-25 17:56:05 240

原创 LeetCode 面试题 02.07. 链表相交

LeetCode 面试题 02.07. 链表相交解答不难,这里着重纪录一下第二种方法,比较巧代码一王道数据结构上有类似题目,双指针同步走class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { int lena=0, lenb=0; ListNode *pa=headA, *pb=headB; while(pa

2022-01-24 19:19:18 638

原创 LeetCode 19:删除链表的倒数第N个结点

LeetCode 19:删除链表的倒数第N个结点解答双指针,不难,这里记录一下添加虚拟头节点,写代码的时候以为加一个虚拟头节点有点烦,其实代码很简单,否则需要if else判断代码一没有使用虚拟头节点,如果删除第一个节点(倒数第N个),需要判断prev是否为空class Solution {public: ListNode* removeNthFromEnd(ListNode* head, int n) { if(head->next == nullptr &a

2022-01-24 10:28:49 74

原创 LeetCode 151: 翻转字符串里的单词

LeetCode 151: 翻转字符串里的单词解答模拟题,先规范空格,在两次反转两次反转的思想在王道数据结构上有规范空格的时候先考虑好各种情况,再一边调试一边修改细节,这道题主要练了这部分代码一class Solution {public: void Swap(string &s, int left, int right){ while(left < right) swap(s[left++], s[right--]);

2022-01-24 01:08:12 195

原创 LeetCode 202: 快乐数

LeetCode 202: 快乐数解答这个题目的经验是纠正自己的习惯题目不难,自己犯的错误是一上手就开始写代码,应该先举几个例子,分析一下有几种可能(比如一开始在中间开始循环就没考虑)通过分析可知情况三不会出现(m位数字的快乐数有上限)代码一:哈希当发现可能有循环时,第一反应是set记录下来每次的数,但是不知道要循环几次,class Solution {public: bool isHappy(int n) { unordered_set<int> s

2022-01-23 17:57:31 88

原创 LeetCode 349: 两个数组的交集

LeetCode 349: 两个数组的交集解答简单,关键有几个地方需要学习和记录一下传入参数是容器,要求第一个参数是小容器,第二个参数是大容器注意getInterserction函数中,要求set1是小集合,set2是大集合,如何对传入的set1和set2进行判断和交换(如果不符合)呢?很巧的方法是重新传参class Solution {public: vector<int> intersection(vector<int>& nums1, vect

2022-01-23 11:02:49 686

原创 LeetCode 59:螺旋矩阵

LeetCode 59:螺旋矩阵解答没什么思维难度,关键是代码的实现方式和中间的细节代码一使用direct表示填充方向,由此判断坐标加减有点贪心的意思,一直往当前方向填充,碰到边界先回退,在redirect中间三段代码有点重复,不够优雅(一开始的想法是基于当前位置来尝试下一个位置,有点像走迷宫)// my solutionclass Solution {public: void show(vector<vector<int> > v){

2022-01-22 11:45:14 194

原创 LeetCode 76:最小覆盖子串(困难)

LeetCode 76:最小覆盖子串(困难)解答基本的滑动窗口应该不难想到,关键是如何判断s的滑动窗口中包含t的所有字母。代码一对s的滑动窗口和字符串t统计字母频率,记录在scnt和tcnt中,对于每个位置i的字母, scnt[i] ≥\ge≥ tcnt[i], 否则s的滑动窗口不能完全包含字符串t。由此得到函数judgeclass Solution {public: bool judge(int* scnt, int* tcnt, string t){ for(i

2022-01-22 01:50:14 398

原创 LeetCode 904: 水果成篮(中等)

LeetCode 904: 水果成篮(中等)解法代码一:按块扫描+滑动窗口手动模拟一下感觉不难,自己写代码感觉总有很多琐碎的细节一开始按块扫描为了思路简单,但是按照代码二也不难class Solution {public: int totalFruit(vector<int>& fruits) { if(fruits.size() == 0) return 0; int bucket[2] = {0,0}; int

2022-01-21 21:03:07 211

原创 LeetCode 283:移动零

LeetCode 283:移动零解法:双指针思路一:覆盖,需要对数组中的每个元素操作一次(前面非零数复制,后面补零)class Solution {public: void moveZeroes(vector<int>& nums) { int idx=0; for(int i=0; i<nums.size(); i++){ if(nums[i]!=0) nums[idx++] = nums[i];

2022-01-21 17:46:34 396

painter.zip

图形学作业终于完成了,bug终于调好了。。。 使用Qt实现的画图板,方法比较naive,支持 1、画线条(鼠标移动),画直线,画矩形,画多边形,画点 2、移动线条,点 3、移动控制点(比如线段的两个端点,多边形的顶点) 4、有5个样例(图形学实验,Bezier支持插入(insert)、删除(delete)、移动控制点,B样条支持修改阶数,插入(insert)、删除(delete)、移动控制点) 5、清空,重置,部分的撤销功能,能改变线条颜色,样式 差不多就这么多功能了, 缺陷与不足: 1、画图的方法很naive,中间的标记有点多了 2、不能移动线条,矩形 3、撤销功能需要完善 4、画布范围有点大 5、好像调填充颜色时有点问题 6、扫描线算法中应该添加一个活性边表的排序 7、Sutherland_Hodgman算法只能裁剪凸多边形 8、各种潜在的bug。。。 各种缺陷与bug自己体会吧,代码中注释写的有点少。。。主要目的还是样例中的五个算法

2020-06-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除