- 博客(64)
- 收藏
- 关注
原创 NVIDIA A100 和 H100 硬件架构学习
WGMMA指令的引入,合并SM里面的4个tensor core 效果类似于一个大的tensor core,减少load tensor次数(A/B tensor 共用),同时支持Tcore core 的inputs 来源于share memory(A100架构及之前的架构,inputs 必须from registers),具体的WGMMA指令inputA from registers or share memory,inputB must from share memory。
2024-08-04 11:58:09
1118
原创 git 合作开发,拉去别人分支的代码
zz的tmp分支更新到本地的zzz/tmp,并创建 local tmp分支, 第一个tmp 是<远程分支名>,第二个tmp 是<本地分支名>,和下方git push 相反)git chekcout -b tmp zzz/tmp (创建 local tmp分支并切换到local tmp 分支)git push <远程主机名> <本地分支名>:<远程分支名>git fetch zzz tmp:tmp (将<git push <远程主机名> <本地分支名>zzz的tmp分支更新到本地的zzz/tmp)
2023-11-22 14:49:28
224
转载 Batch normalization和 layer normalization的区别
另外一词多义的表示中——简单来说,每个词有一片相对独立的小空间,通过在这个小空间中产生一个小的偏移来达到表示一词多义的效果。2、layer normalization可以对transformer学习过程中由于多词条embedding累加可能带来的“尺度”问题施加约束,相当于对表达每个词一词多义的空间施加了约束,有效降低模型方差。NLP数据则是又embedding开始的,这个embedding并不是客观存在的,它是由我们设计的网络学习出来的。其实这个问题是一个比较难的问题,我个人理解也是很有限的。
2023-11-22 10:52:36
147
转载 深度学习中Dropout原理解析
在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。此时,训练模型费时就成为一个很大的问题,不仅训练多个模型费时,测试多个模型也是很费时。Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。Dropout可以比较有效的缓解过拟合的发生,在一定程度上达到正则化的效果。
2023-11-22 10:48:59
95
转载 谈谈深度学习中的 Batch_Size
这是一个 Python 的深度学习库。如果数据集比较小,完全可以采用全数据集 ( Full Batch Learning )的形式,这样做至少有 2 个好处:其一,由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。对于更大的数据集,以上 2 个好处又变成了 2 个坏处:其一,随着数据集的海量增长和内存限制,一次性载入所有的数据进来变得越来越不可行。跑完一次 epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加了,从而对参数的修正也就显得更加缓慢。
2023-11-22 10:44:39
45
原创 Regularization 正则化 和 normalization数据标准化(归一化,规范化)
2、Regularization(正则化)与Dropout:针对。1、 normalization(归一化): 解决的问题是。,就不会进入激活函数的饱和区,学习梯度就不会降为0。3、残差网络(shortcut):在网络。加深的情况下解决梯度消失的问题。
2023-11-22 10:40:43
100
原创 cnn和fc的区别
2、cnn 参数少,每一层都只有一个卷积核,且感知信息范围小,偏局部;而fc参数多,即每一层都有一份weight,感知信息是全面的;【说明图形是相邻部分信息有效,而序列是全局信息有效,而这也同样符合我们自然社会里的认知,事实证明这类型模型的效果也是最理想的】3、本质上cnn和fc都一样,反向过程会对cnn的卷积核和fc的weight进行更新,直至找到最佳的卷积核和weight,这一个过程就是优化特征提取的过程;同时cnn和fc后面都会选择性的接一个激活函数,来增强模型的非线性能力。
2023-11-21 16:56:59
120
原创 bank conflicts 理解
相关链接:https://zhuanlan.zhihu.com/p/410278370(详细介绍了SGEMM 单精度GEMM的高效运算 和 tlr bank conflicts的原理)Bank 硬件资源理解和MC一致,一但数据线性排布方式定了,哪些数据在哪些bank 里也就确定了。模式没有bank conflicts,这种情况下带宽利用率较低,因为只用了一个bank资源;2、如果是多个threads read 同一个bank内的。3、多个threads write 同一个bank 内。
2023-11-21 16:29:36
68
转载 NV cpu golden conv vcore 计算
SERVICES;/*!\file*/template <++n) {++p) {++q) {++k) {++r) {++s) {++c) {if (beta!++n) {++p) {++q) {
2023-11-21 16:16:00
99
原创 L2 cache 表现行为理解
7. stm 写到gmb 和 写到L2上差距不大,带宽都是256GB/s,但stm bypass l2 cache 带宽就会收到noc 到HBM 带宽(stm + ldm
2023-11-21 10:52:55
83
原创 leetcode_416 判断一个数组能否分割成相等的两个子集
解题思路:原本打算暴力求解法解决这个问题,发现有LTE问题,后面看了答案发现,这是经典的背包问题,需要专门找个时间对背包问题仔细分析,留着回过头来分析#include<iostream>#include<vector>#include<algorithm>#include<queue>#include<math.h>using namespace std;// 方法一:暴力求解法,TLE问题//class Solution {
2021-03-31 14:42:09
374
原创 leetcode_406队列根据身高重构
题意分析:原本有一排同学,他们都记录了自己的位置和前面有多少人比他高的信息,现在将这群人打散,请根据他们的信息换原他们原来的排列解题思路:#include<iostream>#include<vector>#include<algorithm>using namespace std;//自定义vector排序bool comp(vector<int>& a, vector<int>& b) { if (a...
2021-03-31 14:33:20
106
原创 leetcode_322零钱兑换最少数目
题意分析:给一定总额,给定可选零钱数组(种类固定但数量不限)解题思路:#include<iostream>#include<vector>#include<algorithm>#include<unordered_set>using namespace std;////方法一:贪心算法 + 乘法 + dfs//class Solution {//public:// int coinChange(vector<int>...
2021-03-31 14:25:09
155
原创 leetcode_347求前k个高频词
题意:找出一组数组中前k个高频词,即考点小顶堆排序算法解题思路:#include<iostream>#include<vector>#include<queue>#include<unordered_map>using namespace std;//struct Node {// int val;// Node* left;// Node* right;// Node() : val(0), left(nu...
2021-03-31 14:07:45
138
1
原创 leetcode_337解题思路(house robber 3)
题意分析:宿舍成二叉树排布,直接相邻的两个节点不能同时被盗,求最大盗取金额解题思路:递归后续遍历法#include<iostream>#include<algorithm>// Definition for a binary tree node.struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nullptr), ri...
2021-03-31 14:00:20
97
原创 leetcode_338 counting bits
题意:求自然数[1~n]的二进制数中1的个数,返回对应的数组。解题方法:动态规划;该题可以用c++的内置函数__builtin_popcount,属于经典题范畴,有相关csdn文件介绍这种题,方法很多样#include<vector>using namespace std;class Solution {public: vector<int> countBits(int num) { vector<int> result(num + ...
2021-01-24 19:21:59
76
原创 leetcode_394解码字符串题解
题意:按照如下方式解码字符串Input: s = "3[a]2[bc]"Output: "aaabcbc"Input: s = "3[a2[c]]"Output: "accaccacc"解题方法:使用递归的方法由里向外逐层解析#include<iostream>#include<string>using namespace std;class Solution {public: string decodeString(string s) {...
2021-01-24 19:17:06
104
原创 leetcode_309买卖股票最佳期(含冻结期)解题思路
#include<iostream>#include<vector>#include<algorithm>using namespace std;// 方法一:暴力求解法,深度优先搜索,遍历所有情况,通过199/201条用例,出现TLE问题class Solution {public: int maxProfit(vector<int>& prices) { if (prices.size() < 2) re...
2020-12-02 10:07:37
105
原创 leetcode_300 Longest Increasing Subsequence,最长上升序列数
#include<iostream>#include<algorithm>#include<vector>using namespace std;// 方法一:vector<pair<int,int>>有序数组统计法,时间复杂度n^2class Solution {public: int lengthOfLIS(vector<int>& nums) { vector<pair<i...
2020-11-15 22:17:14
62
原创 leetcode_287解题思路
题意:[1,n]范围内的n+1个数,有且仅有一个数字重复,请找出这个重复的数字,解题思路有以下三种方法#include<iostream>#include<vector>#include<math.h>using namespace std;// 方法一:改变数组值(可能与题目要求不符),取相反数,判断该数是否是重复数,非常简单的方法class Solution {public: int findDuplicate(vector<int&g..
2020-11-13 18:01:02
126
原创 leetcode_283 将数组中的0元素移动到末尾
#include<vector>using namespace std;//方法一:常规移位法,时间复杂度最长class Solution {public: void moveZeroes(vector<int>& nums) { int Size = nums.size(); if (Size == 0 || Size == 1) return; for (int i = 0; i < Size; i+...
2020-09-13 12:27:18
232
原创 leetcode_240: 在一个向下和向右递增的二维数组里判断一个数是否存在,时间复杂度尽可能底
#include<iostream>#include<vector>using namespace std;//方法一:分割左下和右上区域法class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { bool result = false; if (matrix.size() == 0 || ...
2020-09-12 22:32:19
144
原创 leetcode_279 确定一个正整数由最少的完全平方数组成的个数(理解背包问题和贪心算法)
题意:给你一个正整数,求至少多少个完全平方数加起来的和等于这个正整数#include<iostream>#include<vector>#include<math.h>#include <algorithm>using namespace std;//方法一:dfs暴力求解发,出现TLE问题class Solution {public: int numSquares(int n) { int num = 0; ...
2020-09-12 22:26:02
452
原创 leetcode_238:求数组中处自身元素外其他所有元素乘积的数组(不能用除法)
解析:先要遍历两次数组,分别求出数组元素的左乘积数组和右乘积数组(不包含当前下标元素),最后遍历一次将左右数组对应元素相乘就得到最终要的结果。#include<vector>#include<iostream>using namespace std;class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { //vector&...
2020-08-26 21:13:08
235
原创 leetcode_239: 输出滑框最大值(考点双向队列或DP)
该题难在对双向队列的应用,以及对队列元素的额处理#include<deque>#include<vector>#include<iostream>using namespace std;//方法一:暴力求解发,时间复杂度为k*n,或logk* n 大顶堆(省略)//方法二:双向队列法class Solution {public: vector<int> maxSlidingWindow(vector<int>& ..
2020-08-26 20:29:55
97
原创 leetcode_234判断链表是否是回文链表解题思路
// Definition for singly-linked list.struct ListNode { int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode* next) : val(x), next(next) {}};//方法一:确定链表长度,...
2020-08-23 23:28:53
117
原创 leetcode_236求二叉树两个节点最近的公共祖先
解题思路:分别用两个vector数组存入找到两节点的路径,然后比较两vector相同的元素,代码如下//方法一:两次遍历法,借用两个vector数组class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if (!root) return root; vector<TreeNode*> pVector, qV...
2020-08-20 21:46:16
164
原创 leetcode_230 二叉搜索树BST中序遍历
题意:在二叉搜索树中找到第k小的元素。解题思路:直接按照二叉搜索树中序遍历即可得到从小到大排列的数组,即很容易找到第k小的值#include<iostream>using namespace std;// Definition for a binary tree node.struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode() : val(0), left(nul...
2020-08-11 20:29:00
128
原创 leetcode_226解题思路(二叉树翻转)
题意:实现二叉树的翻转。两种解题意思:一、根据树遍历方式的特点先创建一个二叉树;二、在原树上直接交换每一级的左右子树实现翻转#include<iostream>using namespace std;//definition for a binary tree node.typedef struct treenode { int val; treenode* left; treenode* right; treenode() : val(0), lef...
2020-08-09 19:59:21
125
原创 leetcode_221解题思路
题意:求二维矩阵内的正方形面积(注意:二维矩阵不一定是正方形矩阵),分别从递归法和DP法分析这道题#include<iostream>#include<vector>//#include<algorithm>using namespace std;//方法一:递归算法class Solution {public: int maximalSquare(vector<vector<char>>& matrix) {...
2020-08-09 19:55:10
113
原创 leetcode_215小顶堆解题思路
题意:求数组中第k大的元素;这里只分析时间复杂度为nlogn的方法#include<iostream>#include<vector>#include<queue>#define Error -1#include<cmath>using namespace std;//方法一:大顶堆的底层实现,分三部分:层序遍历生成完全二叉树、将完全二叉树修改成小顶堆、将剩下的n-k个元素遍历对小顶堆做修改class Solution {public:.
2020-08-04 20:34:03
211
原创 leetcode_208前缀树解题思路
#include<string>#include<iostream>#include<unordered_map>using namespace std;class Trie {public: /** Initialize your data structure here. */ Trie() { result = new Node(); } class Node { public: ...
2020-08-04 20:17:22
104
原创 leetcode_207解题思路
题意:选课顺序,即拓扑排序。标准的Kahn(卡恩)算法和DFS算法#include<iostream>#include<vector>#include<unordered_map>#include<unordered_set>#include<stack>using namespace std;//方法一:拓扑排序knlp方法class Solution {public: bool canFinish(int numC...
2020-07-28 22:09:15
129
原创 leetcode_206解题思路
题意:实现链表的反转#include<iostream>#include<stack>using namespace std;// Definition for singly-linked list.struct ListNode { int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) ...
2020-07-26 11:04:53
74
原创 leetcode_169解题思路
题意:求数组中超过半数的元素。网友给出的方法比较有意思,剩下的元素就是多数者#include<vector>#include<unordered_map>#include<iostream>#define Error -1using namespace std;//方法一:unordered_map方法class Solution {public: int majorityElement(vector<int>& nums)..
2020-07-20 22:22:30
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人