- 博客(63)
- 资源 (23)
- 收藏
- 关注
原创 基于二分图匹配算法的商家保量系统实践
本文重点介绍的二分图匹配算法能够做到在匹配窗口内的流量分配全局最优,兼顾流量的分发效率和商家的流量需求,预期大幅提升扶持流量的整体效率,从而带动推荐系统整体效率提升。
2024-03-04 16:10:06
1006
原创 深度模型spark部署
1、深度模型为什么需要部署在spark?现在很多依赖于TensorFlow、PyTorch等深度学习框架训练的模型,都需要GPU的支持。训练好以后需要部署上线,如果是在线模块就需要将模型部署在serving上,但如果是离线模块且预测数据量较大的情况,使用GPU去预测速度就显得比较慢。这时就可以考虑将深度模型部署在spark上,利用深度学习框架的CPU计算方式。尽管CPU的计算相比GPU慢很多,但spark的并发计算能力是远超过GPU的,通过扩大和缩小spark使用的partition数量,就可以自由调整整
2021-04-16 12:07:09
1482
1
原创 OpenAI GPT成全了最强BERT:无监督自然语言模型技术总结
Google提出的BERT(Bidirectional Encoder Representations from Transformers)是现在自然语言处理领域里当之无愧的王者,但是在阅读这篇文献的时候,总有一种和传统自然语言技术断层的感觉。通过研究OpenAI GPT后才恍然大悟,原来这才是其中的桥梁:BERT的思想启发自OpenAI GPT,并应用了transformer的强大处理能力,结合了更多的训练数据、更巧妙的训练手段,才取得了现在这样好的效果。这里就对OpenAI GPT和BERT共同依赖的无
2021-02-14 23:27:43
1818
原创 self-attention在图像视觉领域的发展
关于self-attention的基本定义,以及在自然语言处理方向的发展,参考1、图像识别方向Non-local Neural Networks论文将self-attention抽象成为了一个如同卷积、循环操作类似的通用神经网络构件non-local,并主要应用于图像视频领域。non-local抽象出的主要思想是,每个位置上的响应都是通过所有位置上的特征加权求和得到的,因此它具有绝对的长程依赖特征。对于CNN和RNN来说,卷积和循环操作只能处理局部邻域(即局部注意力),长程依赖是通过增加网络深度从而
2021-02-09 11:12:05
4770
1
原创 self-attention原理和改进方向
1. self-attention原理介绍形象化解释:The Illustrated Transformer哈佛代码介绍:The Annotated Transformer论文解读:Attention Is All You Need - The Transformer2. self-attention改进方向先放资源,后面再解析腾讯AI LABgithub论文发现一个每周论文的博客3. self-attention在其他领域尝试self-attention序列数据分析:attent
2020-11-26 17:46:29
7121
1
原创 地理空间索引:线段的GeoHash编码优化
在上一篇博客中,我们探讨了关于打网格寻找线段和多边形的GeoHash编码的框架,但是对直线而言还有更高效的编码算法,本文就探讨线段的GeoHash编码优化。1. 线段的GeoHash编码问题打网格的GeoHash编码方式需要在2维的网格上进行遍历,真正和线段相交的网格往往只占很少的部分,因此造成效率低下。我们优化的思路就是希望直接找到这些和线段相交的网格,如图所示。如果按照由西向东、由南向...
2019-01-20 11:59:22
1698
2
原创 地理空间索引:线段与多边形的GeoHash编码
在上一篇博客地理空间索引:GeoHash原理中,我们讨论了如何将一个经纬度坐标转化为GeoHash编码,但是出于很多工作上的需要,我们需要在此基础上对线段与多边形进行编码,本文就探讨这个话题。1. 编码直线与多边形这里首先规定一下线段和多边形的输入格式:线段:用起点和终点的经纬度表示,[(108.940430, 34.343436), (116.411133, 39.909736)]多边...
2019-01-07 00:24:15
28659
7
原创 地理空间索引:GeoHash原理
1. 基于空间位置的服务基于位置的服务型电商席卷而来,搭乘网约车去到目的地、搜索附近的餐馆酒旅,无不让人们感觉到便捷。比如打开滴滴APP,我们看到附近的车辆如下那么问题来了,滴滴是怎么快速的匹配出乘客附近2公里的车辆的呢?先讲最暴力的解法:首先获取乘客的经纬度坐标,然后和当前所有车辆的经纬度坐标计算距离,最后筛选留下距离小于两公里的车辆。这种解法计算量随着车辆规模线性增长,因此非常耗时。一...
2019-01-01 23:16:17
10773
7
原创 拟合随时间指数衰减的过程
1. 指数衰减过程在计算诸如新闻热度、特征重要度等场合下,我们需要一种具有这样特性的过程,一个数值随着时间的推移呈现指数形式逐渐放缓的衰减,即这个数值的衰减速度和当前值成正比,数学公式为 dNdt=−αNdNdt=−αN\frac{dN}{dt}=-\alpha N 其中α>0α>0\alpha>0称为指数衰减常数。通过解微分方程可得 N(t)=N0e−αt(1)N(t)...
2018-07-02 00:34:16
51601
3
原创 PySpark中RDD与DataFrame:区别和联系
1. 弹性数据集RDDRDD是一个抽象的分布式数据集合,它提供了一系列转化操作(例如基本的map()、flatMap()、filter(),类集合操作union()、intersection()、subtract())和行动操作(例如collect()、count()、take()、top()、reduce()、foreach())。可以说,RDD是非常灵活的数据集合,其中可以存放类型相同或者...
2018-06-16 18:35:05
12386
2
原创 最大距离二叉树节点
题目给定一个二叉树,定义两个节点的距离为这两个节点之间所有边的个数,要求这个二叉树中两个节点之间的最大距离。例如下图,两个节点之间的最大距离是5。分析1对于树中任何一个节点,包括该节点的树及其所有子树中存在的最大距离可以通过三种途径得到:在该节点的左子树中;在该节点的右子树中;将该节点作为根,横跨左右子树,最大距离是该节点左子树最大深度,加上右子树最大深度,再加2。这样很容易写出递归形式的实
2017-05-14 11:18:18
828
原创 元素互不相邻的最大和子数组
题目对于一个给定的数组,在其中选取其子数组,要求相邻的元素不能选取,且要保证选出的子数组元素和最大。输入数组长度及其元素,输出所选子数组的和。测试输入 7 4 2 6 1 3 5 8测试输出 17分析1为了让子数组和最大,应该尽可能让它包含更多的元素;并且相邻元素不能选取,则只需要分析连续的三个元素的关系即可。按照第ii个元素是否被选取,前ii个元素的和要么与前i−1i-1个元素的和相同
2017-05-13 11:39:15
4211
2
原创 数组分割使子数组和接近
题目描述1:一个无序且长度为偶数的正整数数组,要求将它分割成为两个长度相等的子数组,且这两个子数组的和最接近。输入数组的长度和相应的元素,输出两个子数组各自元素之和。 描述2:两个长度相等的数组,要求将它们的元素互换,使得这两个数组的和最接近。测试输入 10 1 5 7 8 9 6 3 11 20 17测试输出 43 44错误分析设数组所有元素之和为sumsum,要让分割的两个子数组的
2017-05-12 21:53:14
4978
原创 Java虚拟机类加载机制总结
1. 概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制,其中包括加载,连接(验证,准备,解析),初始化三大阶段,都是在程序运行期间动态完成的,具有高度的灵活性。例如实现了接口的程序在运行时才指定实现类;利用类加载器可以在程序运行时从网络加载一个二进制流作为程序的一部分。2. 加载通过类的全名
2017-05-08 00:23:03
575
原创 Java虚拟机内存与垃圾回收总结
1. 运行时内存划分1. 程序计数器字节码行号指示器,用于读取下一条需要执行的字节码指令。 对Java方法记录虚拟机字节码指令地址;对Native方法记录值为空。 线程私有,各线程互不影响。2. 虚拟机栈Java方法执行过程所创建,每调用一个方法就会创建一个栈帧并将之入栈,方法结束后会将栈帧出栈。 栈帧存放局部变量表(编译期分配,包括基本数据类型、对象引用),操作数栈,动态链接,方法出口。
2017-05-06 19:09:36
728
原创 寻找和固定的两个或三个数
题目快速找出一个包含nn个整数的数组中所有两个数的组合,让这两个数之和等于一个给定的值sumsum。输入sumsum和nn,接着是所有整数,要求输出所有两个数的组合。分析1如果直接遍历穷举将会得到O(n2)O(n^2)的时间复杂度。对于每一个元素array[i]array[i]来说,可以将问题转化为sum−array[i]sum-array[i]是否在数组中,而如果事先将数组排序则可以利用二分查找来
2017-05-03 23:59:58
853
原创 组合数学问题
1. 排列组合1. 加法法则和乘法法则设AA,BB是两个无关的性质,具有性质AA的事件有mm个,具有性质BB的事件有nn个 法则 事件数 分析 加法法则:具有性质AA或性质BB的事件 m+nm+n 这里或的意思是两个性质任选其一,m+n=(m+0)+(0+n)m+n=(m+0)+(0+n) 乘法法则:具有性质AA和性质BB的事件 m×nm\times n 这里和的意
2017-04-28 18:30:10
3995
原创 最近二维点对
题目给定二维坐标系中的nn个点,求其中最近的点对。测试输入 5 1 2 -2 3 2 -1 0 3 -3 0测试输出 1.414分析1如果将点的距离两两计算出来需要O(n2)O(n^2)的时间复杂度,显然不是最优方案。先考虑一维数组情况,如果数组已经排好序,则只需要再遍历一遍,找到相邻值的最小距离即可,时间复杂度只是O(nlog(n))O(nlog(n)),但是这种方法不能推广到
2017-04-27 23:50:14
3533
1
原创 深度优先搜索:能否走出迷宫
题目一个m×nm\times n的迷宫里有很多激光,用其起点和终点坐标(x1,y1,x2,y2)(x_1,y_1,x_2,y_2)来表示。有激光的地方不能通过。当起点为(0,0)(0,0),终点为(m,n)(m,n),且移动只能为上下左右各一个单位,问能否从起点到达终点。输入包括mm和nn,接着是激光的个数,每个激光的使用4个坐标表示。如果能够走出迷宫输出1,否则输出0。测试输入 100 80
2017-04-27 14:50:34
992
原创 数字和方法数
题目给定一个有nn个正整数的数组arrayarray和一个整数sumsum,求选择数组arrayarray中部分数字和为sumsum的方案数。当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入为两行,第一行为两个正整数nn(1 ≤ nn ≤ 1000),sumsum(1 ≤ sumsum ≤ 1000),第二行为nn个正整数(32位整数),以空格隔开。测试输入 5 15
2017-04-25 15:28:57
1481
原创 梯度下降优化算法
1. Gradient descentGradient descent is a way to minimize an objective function J(θ)J(\theta) parameterized by a model’s parameters θ∈ℝd\theta\in\mathbb{R}^d by updating the parameters in the opposite d
2017-04-24 11:38:45
1511
原创 广度优先搜索:迷宫最少步数
题目对于一个10*10的迷宫,入口在第一行第二列,出口在最后一行第九列。迷宫中“#”代表墙,“.”代表通路,从任意一个“.”点只能一步走到上下左右四个方向的“.”点。求出走出迷宫所需要的最少步数。测试输入 #.######## #........# #........# #........# #........# #........# #........# #........#
2017-04-24 00:17:38
1686
原创 最大和连续子数组
题目对于一个整数数组,求其连续子数组的最大和。测试输入 7 -2 5 3 -6 4 -8 6测试输出 8分析可以从后向前考虑问题。数组array[i]array[i],i=0∼n−1i=0\sim n-1,定义total[i]total[i]表示前ii个元素中连续子数组的最大和,如果子数组不以array[i]array[i]结尾,则total[i]=total[i−1]total[i]=
2017-04-23 20:03:07
589
原创 最长递增子序列
题目求一个数组中最长递增子序列,要求时间复杂度尽量低。测试输入 7 2 1 4 3 1 5 6测试输出 4分析1采取从后向前的分析思路。如果已知第ii个元素存在于最长递增子序列中,那么前ii个元素的最长递增子序列的问题可以转化为,在前i−1i-1个元素中所构成的最长递增子序列,加上这个第ii个元素。由此可见子问题具有独立性,可以使用动态规划来完成。数组array[i]array[i],i
2017-04-23 17:12:59
492
原创 随机指针链表深复制
题目描述[微软苏州]一条带随机指针的链表,对于每个节点,除了next指针指向下一个节点以外,还带一个randNext指针指向链表中任何一个节点或空。求对这个链表进行深复制,即复制出的链表和原来链表具有完全相同的结构,但是与原链表完全无关。分析1此题难点在于新建链表节点的randNext不能立即在新链表中找到指向,如果要记录randNext指向节点相对于自身的位置,那么每个节点都需要有一个遍历计数过程
2017-04-21 15:06:02
1525
原创 单链表题集
public class linked { static class Node { int data; Node next; Node(int data) { this.data = data; this.next = null; } } static Node bui
2017-04-18 17:52:32
382
原创 Java并发问题总结
1. Java内存模型所有变量都存储在主内存中。这里的主内存只是虚拟机内存的一部分,可以和物理主内存类比。每条线程都有自己的工作内存。工作内存可以和处理器高速缓存类比。工作内存中保存了主内存中变量的拷贝,线程所有的操作只能在工作内存中进行,不同线程不能访问对方的工作内存,只能通过更新到主内存中的方式来传递线程间的变量值。主内存与工作内存间的交互操作都具有原子性,包括 ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪对主
2017-04-14 00:05:44
3963
原创 数论之模加法运算
问题一个mm位的整数,有多少可以被整数nn整除?其中mm可以大于20。测试输入 1 3测试输出 4分析1这个问题显然不能穷举所有的情况。数论中的模加法运算有这样的性质(对乘法也是一样):(a+b) mod n===(a mod n+b mod n) mod n(a mod n+b) mod n(a+b mod n) mod n\begin{array}{lcl}(a+b)\ \text
2017-04-12 21:16:10
14868
3
原创 回溯法求八皇后问题
题目在n×nn\times n棋盘上放置nn个皇后,使她们互不冲突,需要每个皇后不能在同行、同列或者同对角线,求所有解。分析经典回溯法求解例题。定义cols[i]cols[i]表示第ii行的皇后所放的列,则其长度为nn。逐行穷举皇后的位置,一旦发现某一行无论如何放置都会冲突则回溯到上一行,从上一行的下个位置继续穷举。由于是逐行穷举,所以不用考虑0∘0^\circ方向的冲突,只需要考虑90∘90^\c
2017-04-11 23:53:51
556
原创 机器人走方格
题目有一个X×YX\times Y的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数x,y,请返回机器人的走法数目。测试输入: 2 2测试输出: 2分析1使用动态规划求解,定义n[i,j]n[i,j]为从起点[0,0][0,0]到点[i,j][i,j]的走法数目,则递归式为n[i,j]={1,n[i−1,j]+n[i
2017-04-11 17:38:13
677
原创 矩阵快速幂求斐波那契数列
快速幂求数aa的nn次幂,可以采用二分法进行快速计算,即an={an2⋅an2,a⋅an2⋅an2,n为偶数n为奇数a^n=\left\{\begin{array}{ll}a^{\frac{n}{2}}\cdot a^{\frac{n}{2}}, & n为偶数\\a\cdot a^{\frac{n}{2}}\cdot a^{\frac{n}{2}}, & n为奇数\end{array}\ri
2017-04-11 17:05:55
2703
1
原创 堆砌相同高度的塔
题目小易有n块砖块,每一块砖块有一个高度。小易希望利用这些砖块堆砌两座相同高度的塔。为了让问题简单,砖块堆砌就是简单的高度相加,某一块砖只能使用在一座塔中一次。小易现在让能够堆砌出来的两座塔的高度尽量高,小易能否完成呢。输入描述: 输入包括两行:第一行为整数n(1 ≤ n ≤ 50),即一共有n块砖块,第二行为n个整数,表示每一块砖块的高度height[i] (1 ≤ height[i] ≤ 5
2017-04-09 11:19:58
3276
4
原创 动态规划求最长回文子序列
要求找出字符串中最长回文子序列,可以在原字符串中不连续。如“character”的最长回文子序列为“carac”。分析1设字符串ss从第ii个字符到第jj个字符的最长回文子序列长度为p[i,j]p[i,j],则递归式为p[i,j]=⎧⎩⎨⎪⎪1,p[i+1,j−1]+2,max(p[i+1,j],p[i,j−1]),i=ji≠j,si=sji≠j,si≠sjp[i,j]=\left\{\beg
2017-04-09 00:33:16
962
1
原创 高性能Numpy/Scipy:使用Intel MKL和Intel Compilers
1.获取Intel Parallel Studio XEIntel免费软件工具提供免费的软件包,其中包括完整的Intel编译器和计算库及其激活码,软件和激活码一一对应。注意需要使用教育邮箱注册,否则不予通过。2. 安装过程解压后在终端进入./install_GUI.sh,按照提示进行就好,其中激活的步骤需要联网,且最多只能激活5次。最后整个库会安装在\opt\intel路径下,重要的是配置环境变量。
2016-12-17 11:48:26
3297
原创 分类问题中的交叉熵损失和均方损失
分类问题的损失函数交叉熵损失(Cross Entropy Loss):假设误差是二值分布,可以视为预测概率分布和真实概率分布的相似程度。在分类问题中有良好的应用 CE(θ)=−∑i=1nyi∗log(y^i)CE(\theta) = -\displaystyle\sum_{i=1}^{n}{y_i*\log({\hat{y}_{i}})} 其中yiy_i表示真实概率分布,只有yk=1y_k=1
2016-10-04 22:20:17
20553
4
原创 Git常用操作
1. 安装与配置Linux系统$ sudo apt-get install gitWindows系统 从官网下载[https://git-for-windows.github.io/][1], 用Git bash操作。配置提交时相关联的用户名和邮箱$ git config --global user.name [name]$ git config --global user.email [ema
2016-09-24 16:12:55
365
原创 概率问题
1. 雇佣问题问题描述:一个岗位雇佣员工,如果面试人员比当前员工优秀,则该人员被雇佣而替换当前员工,如何在一系列随机的nn个面试人员中以较少的雇佣次数挑选较好的员工?分析:设XX为雇佣总次数,XiX_i为第ii个人员是否被雇佣的指示器,即 Xi={10如果第i个人员被雇佣如果第i个人员未被雇佣X_i=\left\{\begin{array}{ll}1 & \textrm{如果第$i$个人员被
2016-09-24 15:54:16
1329
原创 模型构建问题
图像预处理:减去的均值是数据集所有图片的RGB三个通道的均值构成的向量[Rmean, Gmean, Bmean],每个通道各一个均值。然后所有图像都减去此向量。MEAN_VALUE = np.array([103.939, 116.779, 123.68]) # BGRdef preprocess(img): # img is (height, width, channels), v
2016-09-23 22:22:24
3258
原创 Going deeper with convolutions
1. 动机提高深度网络的性能可以通过加深网络的深度和宽度,但是缺点是容易过拟合且计算量大。所以应该采用稀疏连接结构代替全连接结构,但是现有设备对稀疏计算并不高效,所以依然只采用稠密计算。Inception是一种逼近稀疏连接的结构。2. 结构细节Inception主要思想是在卷积网络钟逼近最优局部稀疏结构,一旦找到就可以在空间上重复使用。在逐层构建中,分析上一层的相关性统计并将高相关性的单元聚集到一起
2016-09-14 23:00:46
659
深度学习 中文译版
2017-04-29
magmamic-1.4.0 Intel MIC port of MAGMA
2016-10-03
magma-2.0.2 Matrix Algebra for GPU and Multicore Architectures Library
2016-10-03
easybcd2.3
2015-11-18
实用Fourier变换与C++实现
2014-05-15
emu8086汇编程序编辑器
2013-11-22
初学者如何学习FPGA
2013-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人