自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (3)
  • 收藏
  • 关注

原创 推荐算法模型 ----- Attentional Factorization Machines 论文阅读笔记

论文名字:Attentional Factorization Machines:Learning the Weight of Feature Interactions via Attention Network论文地址:http://staff.ustc.edu.cn/~hexn/papers/ijcai17-afm.pdfAFM模型提出的目的和背景

2021-02-22 21:24:10 405

原创 阿里妈妈 Deep Interest Network 论文总结

最近刚刚读了盖坤团队大佬的DIN,收获颇多,在此总结一下论文名称:Deep Interest Network for Click-Through Rate Prediction论文地址:Deep Interest Network for Click-Through Rate PredictionDIN提出的背景和目的2018年8月,盖坤大神提出了Deep Interest Network。阿里认为,目前很火热的Embeddng&MLP类模型中,为了更好的训练模型,阿里认为传统的embed.

2021-02-08 20:50:55 299

原创 华为AutoFIS模型总结

最近读了一些SIGKDD的论文,在这里做一个简单的总结,有错误的地方还请各位dalao指点提出的目的和背景华为在2020kdd上提出了新的CTR预估方法。华为指出,很多CTR预估算法都需要进行特征组合,但是传统的特征组合方式都是简单的暴力组合或者人工选择,人工选择的方式依赖于先验知识,而简单的暴力组合其实对模型的性能的提升并不是总有益的,有些组合方式其实对模型的性能提升并没有多少的帮助,甚至会损害模型的性能,而且大量无效的特征组合会形成很多的参数,降低内存的利用率,那么到底如何选择特征组合呢?根据最.

2021-01-28 15:59:21 1055

原创 Sequence to Sequence Learning with Neural Networks 论文内容介绍

论文地址:传送门1.Introduction这篇论文是2014年Google团队提出的一篇论文,当时DNN非常流行,对于语音识别等任务的效果也非常不错,但是DNN是有限制的。比如做MT任务等等,这些序列任务其实对于输出来讲,长度的可变的,例如:English译为“英语”,实际上序列的长度发生了变化,传统的DNN是解决不了这个问题的,于是Google团队提出了seq-to-seq模型的概念。作者选择WMT’14的数据集和英语译为法语的翻译任务为例,将最后的结果和当时SMT的模型做对比,结果基于LSTM的

2020-08-05 16:12:13 395

原创 LeetCode 116. 填充每个节点的下一个右侧节点指针

116. 填充每个节点的下一个右侧节点指针解题思路:首先,这道题如果使用BFS很快就能AC,思路就是,使用队列存储每一层的节点,并用一个变量存储相应的层次,但是这样做的话,就违反了题目的 O(1)O(1)O(1) 的要求但是观察题目不难发现,这是个完美二叉树,既每个双亲节点都有两个孩子节点,而且如果某一层N已经链接完毕,则这一层的所有节点相当于一个链表,我们可以利用N层的节点来对N+1层进行处理,我们发现只有两类节点需要处理,既两个节点来自同一个父节点,以及两个节点来自不同父节点。情况1(来

2020-07-01 09:18:53 90

原创 Keras实现LeNet-5 对mnist数据集进行识别

记录一下keras代码学习过程,LeNet-5的网络结构就不在这里叙述了,推荐知乎一位大神的讲解:https://zhuanlan.zhihu.com/p/74176427.代码:import numpy as npimport matplotlib.pyplot as pltfrom keras.datasets import mnistfrom keras.models import Sequentialfrom keras.layers import Flatten, Dense, C.

2020-06-18 18:02:02 801

原创 使用python实现两层神经网络(HW3)

使用python实现两层神经网络(HW3)记录一下手动实现一个两层的全连接神经网络,主要针对于李宏毅老师HW3的7分类问题。本来是想拿NN SVG画一下这个结构,结果维度太高,它死机了。。(好吧,是我太菜了,,不太会用),所以用一个小的结构代替一下,就是一个简单的FCNNbp算法就不写在这里了,其他的大神都讲的很不错的。网络大概结构:源代码:import numpy as npimport matplotlib.pyplot as pltfrom keras.utils import

2020-06-17 09:32:00 1297

原创 Leetcode 93. 复原IP地址

93. 复原IP地址解题思路:典型的dfs+回溯的题:挨个判断所有的字符串类型组合,符合题意则加入最后的vector否则退出递归;这里说一下几个点,首先,dfs传入的此一个参数,是剩下的数字字符串,使用stoi的时候,要防止结果溢出,我们知道ipv4地址的每一项最多3位,所以,当前字符串超过三位之后,直接return,在for循环中也是一样,截取的字符串长度超过3,直接break;还有注意测试用例: “010010” ,也就是说stoi会直接忽略掉前置0,比如010,会直接转换为10,最后造成错误

2020-06-10 10:04:57 122

原创 Leetcode 92. 反转链表 II

92. 反转链表 II解题思路:从m到n的位置反转链表,利用头插法可以反转排列的特性进行首先要定义两个头节点 s_head和new_head ,定义头节点的目的是为了方便统一处理,否则会很麻烦定义index = 0 为当前指针索引位置,如果处于m的位置上,则要记录反转链表的新尾巴如果处于m和n之间,则利用头插法,把当前节点插入新链表中如果处于n的位置上,则要把新链表重新插回原来的链表中源代码:/** * Definition for singly-linked list. * s

2020-06-03 09:39:16 101

原创 Leetcode 86. 分隔链表

86. 分隔链表解题思路:这道题第一反应就是,模拟快排算法的那个分割,但是分割之后会有问题,无法保证之前的相对顺序,所以,采用双链表解法,after指针指向比target更大的数,before指针指向比target更小的数,最后把after和before指针连起来就ok了源代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * L

2020-05-29 13:14:59 116

原创 Leetcode 80. 删除排序数组中的重复项 II

80. 删除排序数组中的重复项 II解题思路:既然题目要求原地算法,那就直接在原数据上做修改,设一个gap,这个的作用就是标记我们删除的元素的个数,后面的元素直接对前面重复的元素进行覆盖,但是覆盖多少个呢,就是gap个。c++代码:class Solution {public: int removeDuplicates(vector<int>& nums) { int gap = 0, i, cal = 0, len = nums.size();

2020-05-28 12:54:30 100

原创 Leetcode 71. 简化路径

71. 简化路径解题思路:这道题和栈的应用之求逆波兰表达式的解法很像,所以使用栈来求解首先定义一个字符串栈,用来保存当前目录里最后剩余的文件名。由于c++没有split函数,所以要自己写一个才行,把原来的path,按 ‘/’ 这个符号进行分割。遍历分割好的vector,分三种情况讨论:(1). 如果当前字符串为 “点点” ,则代表要访问父目录,如果当前目录栈还有剩余字符串,则把这个字符串弹出。(2). 如果当前字符串为 “点 ”,则代表当前目录,那么我们就什么也不做就行(3). 其余情况

2020-05-26 10:09:25 124

原创 每日一题 146. LRU缓存机制

146. LRU缓存机制源代码(记录一下):class LRUCache {private: list<pair<int, int>> cache; unordered_map<int, list<pair<int, int>>::iterator> cache_hash; int max_capacity = 0; int c_capacity = 0;public: LRUCache(int ca

2020-05-25 10:50:05 128

原创 Leetcode 63. 不同路径 II

63. 不同路径 II解题思路:这题思路和62基本一致,不一样的地方在于细节处理,初始值的时候,如果遇到障碍,则障碍之后的dp值都为0,dp[i][j]的值要根据是否有障碍物来判断,如果有障碍物,它就是0,否则就是dp(i,j)=dp(i−1,j)+dp(i,j−1)dp(i,j)=dp(i-1,j)+dp(i,j-1)dp(i,j)=dp(i−1,j)+dp(i,j−1)源代码:class Solution {private: int dp[110][110];public:

2020-05-24 17:17:14 93

原创 Leetcode 62. 不同路径

62. 不同路径解题思路:这道题,单单从题意上说,有两种解决方式,第一种我们很快就能想到暴力解决,也就是递归+回溯方法一:暴力解决法:首先定义一个vis数组,用来记录哪些小格子是走过的,防止重复计算路径个数;然后不停的向下和右去递归遍历,直到finish,很显然,这种做法会超时。方法一源码:class Solution {private: bool vis[200][200] = {false}; int res = 0;public: void helper

2020-05-24 16:47:40 118

原创 Leetcode 61. 旋转链表

61. 旋转链表解题思路:这题原来打算使用比较笨的方法,就是用unordered_map去映射每一个节点,把新的索引作为map的索引,但是发现最后结果超时了。。所以新的思路就是,首先把整个链表拉成一个环,然后通过规律找到旋转后,新的第一个元素节点的位置,从这个位置把环断开。假设整个链表长度为len,要右移旋转的偏移量为k(就是题里给的那个k),则第一个元素被偏移到:(0+k)%len(0+k) \% len(0+k)%len,而新的第一个元素的原来的索引就是:len−(0+k)%lenlen -

2020-05-24 14:37:11 150

原创 剑指Offer 面试题32 - II. 从上到下打印二叉树 II

面试题32 - II. 从上到下打印二叉树 II解题思路:BFS从根节点开始遍历二叉树,如何判断当前是哪一层呢?利用tag打标记,第一次的end_node设置为root ,后面记录下一层的最后一个节点,用tag存储,当前层的最后一个节点进入队列的时候,将当前的vector压入结果中,清空vector并更新end_node的值。源代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; *

2020-05-23 19:41:21 138

原创 Leetcode 每日一题 76. 最小覆盖子串

76. 最小覆盖子串解题思路:本题采用滑动窗口的方法(事实证明,这效率有些低)。首先定义两个指针left和right,分别指向主串的两边位置定义两个hashTable ,一个用来记录主串当前每个字符映射的个数,另一个是记录模式串每个字符的个数模式串每个字符对应的个数首先都要映射到一个hash表中,这个主要是用来当作判断的一个筹码。遍历主串中每一个字符,此时要对滑动窗口进行调整,每一个字符加进来,要扩大当前窗口的右指针,然后判断当前窗口里是否包含每一个模式串元素,如果包含,则尝试缩小左指针,以

2020-05-23 18:09:25 148

转载 Leetcode 每日一题 1371. 每个元音包含偶数次的最长子字符串

1371. 每个元音包含偶数次的最长子字符串解题思路:官方的解题思路太好了。。。官网思路 记录一下代码,方便自己日后复查。源代码:class Solution {public: int findTheLongestSubstring(string s) { // 用来保存当前序列的状态 int c_s = 0, maxLen = 0; vector<int> status(100, INT_MIN); int

2020-05-23 12:02:46 211

原创 剑指Offer 面试题21. 调整数组顺序使奇数位于偶数前面

面试题21. 调整数组顺序使奇数位于偶数前面解题思路:本题思路类似于快速排序的一次划分。我们回忆一下快排的划分,两个指针分别指向当前序列的前后两端,我们的目的就是让比当前数小的放在左面,比当前数大的放在右面此题思路类似,同时设立两个指针,指向序列的头和尾,从右指针开始遍历,如果某个数为奇数,则换到左指针位置上,然后开始遍历左指针,如果左指针指向的某个值为偶数,则将其放入右指针指向的位置上,直到左右指针相遇,算法终止。源代码:class Solution {public: v

2020-05-19 15:34:34 148

原创 LeetCode 每日一题 680. 验证回文字符串 Ⅱ

680. 验证回文字符串 Ⅱ解题思路:这道题时改编回文字串的题,直接暴力判断会超时,所以要想办法在线性时间内解决,由于题目限制只能删除一个字符,这个时候我们可以在第一次双指针不匹配的时候选择性删除某一面的字符,两次判断是否为回文字串,如果都不行则返回false,如果删除某一面的字符可以符合要求,就返回true,显然应该使用 || 来判断最后的结果源代码:/** * @param {string} s * @return {boolean} */var judge = function(s

2020-05-19 12:53:25 123

原创 剑指Offer 面试题17. 打印从1到最大的n位数

面试题17. 打印从1到最大的n位数解题思路:这道题相对比较简单,找规律的题首先参数n为要打印的位数,那么每一位都是从哪里开始的呢,规律就是以10的整数次幂为界限,假设当前要遍历 i 位的数字,则开始的值为: 10i−1 .\ 10^{i-1}\,. 10i−1.,结束的值自然就是 10i−1\ 10^{i} - 1 10i−1源代码:class Solution {public: vector<int> printNumbers(

2020-05-18 17:08:38 111

原创 剑指Offer 面试题13. 机器人的运动范围

面试题13. 机器人的运动范围解题思路:和面试题12的解题思路几乎一致,利用dfs+回溯,不过这次题目的意思是,要计算所有能够到达的小格子的个数,而不是最长路径数,所以没必要比大小,直接自增就可以了。源代码:class Solution {private: vector<vector<int>> dir = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; int maxLen; bool vis[300][300] = {

2020-05-18 14:48:30 159 1

原创 剑指Offer 面试题12. 矩阵中的路径

剑指Offer 面试题12. 矩阵中的路径解题思路:利用DFS加回溯的思路,寻找所有可能的路径。分别向上、左、下、右四个方向寻找,如果有一个方向走得通,则返回true,如果都走不通,说明当前元素无法形成路径,要进行回溯。源代码:class Solution {private: int len; bool vis[1000][1000] = {false};public: bool helper(vector<vector<char>>&amp

2020-05-18 12:00:58 162

原创 剑指Offer 面试题10- II. 青蛙跳台阶问题

剑指Offer 面试题10- II. 青蛙跳台阶问题题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21提示:0 <= n <= 100来源:力扣(LeetCode)链接:https://leetcode-cn.com/problem

2020-05-17 17:29:50 114

原创 剑指Offer 面试题07. 重建二叉树

解题思路利用递归分治法重新建立二叉树:首先,我们先找规律。给定一个二叉树的前序遍历和中序遍历是可以唯一确定一颗二叉树的,怎么建呢?先序遍历,每次都首先遍历根节点,那么好了,每一次我们在先序序列中的元素都是某子树的根节点,整个先序序列的第一个元素就是整个二叉树的根元素既然根元素确定了,就需要知道根元素的左子树和右子树都有哪些,怎么确定呢?就要去中序序列中找,如下如所示:当我们的根节点确定了是3之后,要去中序遍历中找以3为根节点的左右子树,中序遍历的顺序是:左子树、根、右子树,所以当我们在中序序列中

2020-05-17 17:12:31 126

原创 剑指Offer 面试题06. 从尾到头打印链表

解题思路使用stack辅助,先把值压进stack中,再从stack里把值压进vector源代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int&g

2020-05-17 11:41:24 142

原创 剑指Offer 面试题04. 二维数组中的查找

解题思路这是一道典型的二分查找题,通过找规律可以发现,从左下角开始的话,不用向下或是向左查找,相当于找一颗二叉查找树,具体算法如下:首先定义当前查找位置:index_x = Matrix.size()-1和index_y = 0通过循环查找。边界条件为:index_x < 0 || index_y > Martrix[0].size(),具体的含义就是,一直向上或者右方向去找,一直找到target或者出某一方向的边界为止如果找到target,直接退出循环,并返回true,否则,如果当

2020-05-17 11:03:48 166

转载 NIO 、AIO和BIO的区别(转载)

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有...

2020-04-25 15:27:25 80

原创 LeetCode 56 合并区间

LeetCode 56 合并区间解题思路:首先我看到这个题,第一反应是暴力解法,由于区间集合是无序的,所以直接三重for循环,最外面遍历所有的区间,里面找每一个区间所有可能的合并区间,最后结果。。不出意外的超时了看过题解后,不得不感叹,自己实在是,太笨了。首先要对整个区间集合排序,条件就是先按起始值的大小排。起始值大小相同的情况下,再按结束值的大小排;其实这样排序的好处就是,尽量让...

2020-04-23 23:12:04 113

原创 Lodash源码解析-------chunk函数

基本思想没有看过chunk函数的内部实现,根据官方文档给出的功能自己编写实现。chunk函数接受两个参数,第一参数为array类型,第二个参数为number类型,其作用的是:将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。例子如下:_.chunk(['a', 'b', 'c'...

2020-04-10 23:46:02 724

原创 javascript 函数节流(读书笔记)

1. 函数截流基本概念看书的时候发现一个非常有意思的概念,叫函数截流。这个名字听着很高级,实际上它是为了解决短事件内进行大量操作问题的。通俗的理解方式就是,在开发中可能会出现,某些事件会在短事件内大量触发,例如resize、mouseover等等,这样大量操作DOM的事件会使浏览器挂起甚至崩溃,为了降低操作频率,使用函数截流的概念,让这种操作在某个特定的时间内,只执行一次2. 两种实现方式...

2020-04-05 18:25:36 95

原创 Promise的源码记录

Promise 源码记录(上课过程记录的笔记)Promise.js代码:仅仅实现了简单的then,catch和Promise对象的执行器函数(function (window){ /** IIFE */ const PENDING ='pending'; const RESOLVED ='resolved'; const REJECTED = 'rejecte...

2020-04-03 17:23:16 104

转载 v-model和v-bind的区别(转载)

v-model和v-bind的区别Mustache (双大括号写法)不能在 HTML 属性中使用,应使用 v-bind 指令:<div v-bind:id="dynamicId"></div>这对布尔值的属性也有效 —— 如果条件被求值为 false 的话该属性会被移除:<button v-bind:disabled="someDynamicConditio...

2020-03-25 15:45:52 427

原创 LeetCode 55 跳跃游戏

Leetcode 55 跳跃游戏解题思路:这个题典型的贪心算法,不过一开始我用的递归法,结果递归栈爆掉了,我查了一下那个超时的测试用例,结果如下:当我看到这个测试数据,我整个人都裂开了。。。于是求助了大神的思路,真的是太简洁了。。。整体将所有的step遍历一次,cindex记录了当前的索引位置,jump_length记录了这个人所能跳的最远距离(注意,如果当前位置比这个人所能跳的最远...

2020-03-15 18:21:01 90

原创 LeetCode 50 Pow(x, n) (快速幂)

LeetCode 50 Pow(x, n) (快速幂)解题思路:本题最直观的方法采用暴力解法,既用n个x相乘,但是最后一定会超时,因为有个测试用例用的n = INT_MAX;所以本题采用快速幂的解法。首先,如果我们要求值xnx^{n}xn,可以将其分解为xn/2∗xn/2x^{n/2}*x^{n/2}xn/2∗xn/2,此时我们假设xn/2x^{n/2}xn/2是已知的,然后递归的求xn...

2020-03-12 21:27:24 102

原创 LeetCode 49 字母异位词分组

LeetCode 49 字母异位词分组解题思路:我本人比较笨,这里介绍本来还是打算用next_permutation()作弊过的,但是发现这个方法处理空字符串很不友好,而本题测试用例是有空字符串的,所以采用暴力解法,眼看马上就超时了。。首先定义visited数组,用来保存访问过的元素,以保证以后不再访问利用sort函数,对所有的vector中的字符串进行排序(注意在排序之前一定要把原来...

2020-03-10 20:29:43 87

原创 LeetCode 46 全排列

LeetCode 46 全排列由于自己很笨,前期想了好久,结果一查大神的思路,一个stl就解决了。。。。首先定义一个char类型的数组,要把数字转化为字符才能进行字典排序。百度查了一下next_permutation() 的用法,这个函数是按照字典序产生排列的,并且是从数组中当前的字典序开始依次增大直至到最大字典序,它的返回值是一个bool类型,表示,如果有下一个字典排列就返回true...

2020-03-09 13:08:53 129 1

转载 webpack配置中关于entry对象vendor属性的问题

(此仅为记录学习用,本文为转载文章,详细原文地址为:原文地址)为什么要使用vendor属性?一般情况下,使用此属性的目的是为了方便开发调试,或者是部署到服务器时提高应用的访问速度。在webpack 的打包此文件过程中通常会根据文件的内容计算出一个hash值,并将该值加到文件名中,并配置一个长达一年的缓存控制。之所以这么做,是因为vendor.js中的内容基本上很少更新,当我们根据业务需求修改相...

2020-03-07 20:36:40 1532

原创 LeetCode 41字符串相乘

LeetCode 41字符串相乘解题思路:本题要求两个字符串数字相乘,显然是个大数乘法的题,结果用一个int类型数组表示。首先判断特殊情况,既某一个数字为0。如果出现,直接返回字符串 “0”如果结果非0,则将两个字符串翻转,这是因为要按照人类的思维习惯进行乘法,既从个位开始,如果不反转,第一位取的不是个位,而是最高位。翻转之后,采用惰性存储法,我们不考虑进位问题,等到后面合并的时候统...

2020-03-07 09:57:55 185 1

esl-erlang_22.1-1_ubuntu_xenial_amd64.deb

erlang ubuntu的安装包 deb文件版本

2021-04-24

2019 最新斯坦福CS224n课件.rar

2019 cs224n 最新课件(包括ppt+note+homework),课程主要对接stanford cs224n 2019年最新课程

2020-08-14

离散数学ppt(东北大学mooc课件)

离散数学ppt(东北大学mooc课件)。主要用于离散数学的学习和应用,适用于大学及研究生的学习和备课。

2020-05-04

空空如也

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

TA关注的人

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