- 博客(115)
- 收藏
- 关注
原创 卷积神经网络
CNN卷积神经网络(CNN)反向传播算法推导卷积神经网络(CNN)反向传播算法推导虽然卷积神经网络的卷积运算是一个三维张量的图片和一个四维张量的卷积核进行卷积运算,但最核心的计算只涉及二维卷积,因此我们先从二维的卷积运算来进行分析:如上图所示,我们求原图A处的delta误差,就先分析,它在前向传播中影响了下一层的哪些结点。显然,它只对结点C有一个权重为B的影响,对卷积结果中的其它结点没有任何影响。因此A的delta误差应该等于C点的delta误差乘上权重B。大家可以尝试用相同的方法去分析原图
2021-09-13 21:22:19 234
原创 Roberta
相较于Bert改进版的RoBERTa到底改进了什么?静态Masking vs 动态Maskingwith NSP vs without NSP更大的mini-batch原本的BERTbase 的batch size是256,训练1M个steps。RoBERTa的batch size为8k。更多的数据,更长时间的训练BPE编码BPE...
2021-08-27 21:33:47 132
原创 反悔贪心专题
反悔贪心给定截止时间和价值,每个花费单位时间价值一定模型(耗费时间/截止时间)贪心反悔机给定截止时间和价值,每个花费单位时间约翰有太多的工作要做。为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间。 他的工作日从 0 时刻开始,有 10^9 个单位时间。在任一时刻,他都可以选择编号 1 到 N 的 N 项工作中的任意一项工作来完成。 因为他在每个单位时间里只能做一个工作,而每项工作又有一个截止日期,所以他很难有时间完成所有N个工作,虽然还是有可能。 对于第 i 个工作,有一个截止时间
2021-08-24 20:30:18 288
原创 笔试题汇总
01分隔第一行输入 n 字符串长度, 第二行为字符串,字符串只包含01,返回数组,表示每个位置前缀字符串能被划分为 01相同比例的子串的个数,例如 分成 两个子串01个数分别为 (a,b) & (c,d) 则满足 ad = bc。思路: 遍历一次字符串,记录01出现次数,字典保存比例出现次数,比例化为最简,有一个出现0次的情况统一归为(0,1) | (1,0),将当前位置比例对应次数返回import collectionsimport mathn = int(input())s = i
2021-08-21 21:39:31 176
原创 面经-机器学习
机器学习ROC 曲线 & AUCGMM 高斯混合模型xgboostEM算法ROC 曲线 & AUC横坐标为假正,纵坐标为真正越接近1越好,(0,0)表示都预测成负,(1,1)表示都预测成正而FPR(False Positive Rate)= FP /(FP + TN),即负类数据被分为正类的比例TPR(True Positive Rate)= TP /(TP + FN),即正类数据被分为正类的比例AUC(Area Under Curve)被定义为ROC曲线下与坐标轴围成的面积,
2021-08-19 19:35:07 145
原创 工作笔记记录
工作笔记2021.07.222021.07.22pyspark 获取sql数据import os, re, json, time, datetimefrom tqdm import tqdmimport pandas as pdimport numpy as npfrom collections import Counterfrom pyspark import SparkConffrom pyspark.sql import SparkSessionconf = SparkConf
2021-08-18 17:07:53 98
原创 面经汇总-1-模型
面经汇总bert & transformerbert & transformerBERTTransformertransformer或bert的实现方法transformer的attention实现bert的两个上游任务如何实现Masked LM:mask 15%80% [MASK],10% random,10% unchangeNext Sentence Prediction (NSP)[CLS] to predict50% isNext,5
2021-08-15 15:41:14 161
原创 面试题-2
面试题2L1, L2 正则的区别,L1为什么会造成稀疏描述一下 max_pool和avg_pool 正向反向传播介绍一下 self-attention 机制描述一下 Transformer 结构boost 和 baggingBagging和Boosting的区别:随机森林闭包还有迭代器模型参数GPU并行参考链接L1, L2 正则的区别,L1为什么会造成稀疏L2正则:我们发现,权重w每次乘上的是小于1的倍数进行收敛,而且其导数在w = 0 时没有办法做到左右两边导数异号,所以L2正则使得整个训练
2021-08-11 17:06:12 251
原创 页面化展示
页面化展示脚本页面做badcase分析,页面化查询脚本# coding:utf-8import collectionsimport sysfrom flask import Flask, render_template, requestimport jiebaimport leveldbimport pandas as pdimport timeimport pickleapp = Flask(__name__)level_obj = Noneclass LevelDb(
2021-08-11 17:05:21 113
原创 单调栈专题
单调栈42.接雨水84. 柱状图中最大的矩形85.最大矩形42.接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。class Solution: def trap(self, height: List[int]) -> int: stack = [] ans = 0 for i, h in enumerate(height): while stack and h
2021-08-02 17:09:26 89
原创 leetcode最热100道
leetcode4. 寻找两个正序数组的中位数5. 最长回文子串4. 寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。思路: 二分查找两个数组中排序为k的值或k,k+1的均值,每次两个数组各取第前k/2个比较,小的那个以及后面都淘汰,该数组指数右移到后一位,循环操作,直到k==1或有一个数组淘汰完。class Solution: def findMedianSortedArrays(self
2021-07-23 00:16:36 481
原创 动态规划专题
动态规划139.单词拆分139.单词拆分给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> bool: dp = [False]*(len(s)+1) dp[0] = Tr
2021-07-17 21:01:55 226
原创 深度优先搜索和广度优先搜索
617.合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。思路: 每次要存两个树节点的元祖共同遍历,直接在左树上进行操作,在循环中先将左树加上右树值,再对两个节点的左右子树判定,都为非空则入队列,否则直接赋值左树的左右子树为另一非空值。bfs:# Definition for a binary tr
2021-07-15 22:41:33 161 1
原创 买卖股票的最佳时机
买卖股票的最佳时机买卖股票的最佳时机 II买卖股票的最佳时机 III买卖股票的最佳时机 II给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。动态规划:一维:交易日期,价格数组长度二维:两种状态:持有或现金class Solution: def maxProfit(self, price
2021-07-15 22:00:07 197 1
原创 567. 字符串的排列
字符串排列给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。思路: 维护26格char计数数组,全部为0时返回True,diff变量记录不同char个数,滑动窗口遍历数组,首先从起点出发,计算当前charcount和diff,然后每次只考虑左右位置,对左右位置对应char的count进行操作,最后若diff为0返回Trueclass Solution: def checkInclusion(self, s
2021-07-15 11:05:30 96
原创 连续乘积子数组
总结: 对于乘积数组,常用方法为保存最大最小两个值,遇到负值就交换152.乘积最大子数组给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。乘以一个负数,最大最小发生转换,所以维护保存最大最小值,每次遇到负数,最大乘以负数变成最小, 最小乘以负数变成最大class Solution: def maxProduct(self, nums: List[int]) -> int: max_pro = nu
2021-07-12 19:15:14 415
原创 算法—双指针
双指针旋转数组旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?环状替换:思路:依次交换右移,每次从起点开始回到起点走了a圈遍历了an个元素,同时每个元素相隔为k交换了b个元素,有等式an=bk,所以 b=lcm(n,k)/kb =\text{lcm}(n,k)/kb=lcm(n,k)/k,所以外层循环的次数为nklcm(n,k)
2021-07-12 13:56:08 179
原创 918. 环形子数组的最大和
918. 环形子数组的最大和给定一个由整数数组 A 表示的环形数组 C,求 C 的非空子数组的最大可能和。在此处,环形数组意味着数组的末端将会与开头相连呈环状。(形式上,当0 <= i < A.length 时 C[i] = A[i],且当 i >= 0 时 C[i+A.length] = C[i])此外,子数组最多只能包含固定缓冲区 A 中的每个元素一次。(形式上,对于子数组 C[i], C[i+1], …, C[j],不存在 i <= k1, k2 <= j 其中 k
2021-07-11 15:32:29 124
原创 55. 跳跃游戏 & 45. 跳跃游戏 II
跳跃游戏跳跃游戏跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。思路:每次保存能最远到达的位置,如果当前位置大于最远位置,提前返回,否则每次更新最远距离class Solution: def canJump(self, nums: List[int]) -> bool: max_length = 0 for i in range(len(nu
2021-07-10 20:57:32 148
原创 打家劫舍
198.打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。思路: 动态规划,子问题每次查看当前值与跳一格值和与前一格值比较,每个位置保存当前及之前的最大值class Solution: def rob(self, nums: List[int])
2021-07-09 16:40:58 94
原创 算法-二分查找
二分查找704.二分查找34. 在排序数组中查找元素的第一个和最后一个位置二分查找细节总结:基础二分查找,搜索区间为闭区间,所以终止时right 在 left 左边一格,while 带等号, mid 加减 1,遇到target 返回左右边界的二分查找,搜索区间若为 左闭右开区间, while 不带等号, 终止时left == right,mid 不减 1, 遇到target 根据左还是右决定。最后加个判断。搜索区间若为 闭区间,同基础二分, 寻找左边界时,只有小于target缩进左边界,最后返回
2021-07-09 15:16:32 92
原创 509. 斐波那契数 & 322. 零钱兑换
动态规划专题1斐波那契数零钱兑换动态规划专题讲解动态规划思路:明确 base case -> 明确「状态」-> 明确「选择」 -> 定义 dp 数组/函数的含义。代码改进方向:暴力递归 -> 带备忘录的递归-> dp数组迭代斐波那契数斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。动态规划dp数组:class Solution: def fib(self, n: in
2021-07-08 14:25:18 82
原创 栈模拟遍历二叉树前、中、后序
栈模拟遍历二叉树前、中、后序先序遍历 def preorderTraversal(self, node, k): # write code here stack = [] res = [] while node or stack: while node: stack.append(node) res.append(node.val) node = node.left
2021-06-25 21:49:57 169
原创 5. 最长回文子串
5. 最长回文子串题目描述给你一个字符串 s,找到 s 中最长的回文子串。class Solution: def longestPalindrome(self, s: str) -> str: n = len(s) if n < 2: return s mlen = 1 mbegin = 0 dp = [[False]*n for _ in range(n)] f
2021-06-10 16:19:17 59
原创 BERT
BERT论文代码摘要论文提出了新的语言表示模型(language representation model)BERT:Bidirectional Encoder Representations from Transformers由无标注的文本,双向地训练得到,在多个下游任务fine-tune取得了很好的提升Introductionpre-training 有两种 ELMo的feature-based和 GPT的fine-tune,BERT使用了fine-tune 并改进了 GPT 的单
2021-05-24 17:56:16 102
原创 GPT
Improving Language Understandingby Generative Pre-TrainingAbstractIntroductionRelated WorkFramework论文Abstract本文为了解决自然语言理解任务,提出了pre-training和fine-tune模式,在无标注的文本中pre-training模型,再在具体任务中有标注地进行fine-tune,模型相比那些专门任务设计的模型,都展现了更好的效果Introduction大部分文本无标注,而标注会花费很
2021-05-21 16:11:21 72
原创 Attention Is All You Need
Attention Is All You Need论文链接摘要论文提出了新的序列转换(sequence transduction)的transformer 模型,基于注意力机制(attention mechanisms),而非递归或卷积网络。根据机器翻译实验,模型更容易进行并行,并且训练地更快。28.4 BLEU on the WMT 2014 English-to-German translation taskIntroduction前人工作基于Recurrent models,递归神经网络,在
2021-05-18 22:09:23 220
原创 剑指 Offer 68. 二叉搜索树的最近公共祖先
剑指 Offer 68. 二叉搜索树/一般树的最近公共祖先二叉搜索树的最近公共祖先# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self,
2021-05-17 16:31:29 90
原创 剑指 Offer 63. 股票的最大利润
剑指 Offer 63. 股票的最大利润假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?class Solution: def maxProfit(self, prices: List[int]) -> int: dp = 0 cost = float('+inf') for p in prices: cost = min(cost, p) dp =
2021-05-14 16:05:44 79
原创 剑指 Offer 60. n个骰子的点数
剑指 Offer 60. n个骰子的点数题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。class Solution: def dicesProbability(self, n: int) -> List[float]: L = [[0]* 6 * n for _ in range(n + 1)]
2021-05-13 20:07:26 62
原创 剑指 Offer 59 - II. 队列的最大值
剑指 Offer 59 - II. 队列的最大值题目描述请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1类似:JZ64 剑指offer 滑动窗口的最大值class MaxQueue: def __init__(self): self.dq = collections.deque()
2021-05-13 15:14:12 92
原创 字节笔试4,25
字节笔试第三题n 行数据:该需求所需天数di, 延期该需求需要请ci杯奶茶3 41 1002 25 5要求输出最少奶茶顺序:2 1 3 4import functoolsclass Node: def __init__(self,index,day,cost): self.i = index self.d = day self.c = costdef cmpare(x, y): if x.d * y.c > x.c
2021-04-26 12:26:16 162
原创 剑指 Offer 47. 礼物的最大价值
剑指 Offer 47. 礼物的最大价值题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?动态规划:中间每个位置由上面和左边的最大值决定class Solution: def maxValue(self, grid: List[List[int]]) -> int: f
2021-04-24 14:24:07 82
原创 剑指 Offer 46. 把数字翻译成字符串
剑指 Offer 46. 把数字翻译成字符串题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法动态规划:class Solution: def translateNum(self, num: int) -> int: s = str(num) # a = f[0], b
2021-04-23 16:49:00 82
原创 剑指 Offer 45. 把数组排成最小的数
剑指 Offer 45. 把数组排成最小的数题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。import functoolsclass Solution: def minNumber(self, nums: List[int]) -> str: def compare(x, y): a, b = x + y, y + x if a > b: return 1
2021-04-23 16:14:25 67
原创 剑指 Offer 44. 数字序列中某一位的数字
剑指 Offer 44. 数字序列中某一位的数字题目描述数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。思路:n - 1,除掉首位的0,一位的有9个,两位的有90个。。。以此类推。cnt 用于存储这些,cnt x digit 表示这些数占用的位置数,比如 897,n最后把前面的0到99都踢掉了,起始位置为100,digit为3,然后定位,得到最终
2021-04-23 14:47:03 70
原创 剑指 Offer 41. 数据流中的中位数
剑指 Offer 41. 数据流中的中位数题目描述from heapq import *class MedianFinder: def __init__(self): """ initialize your data structure here. """ self.Bigger = [] # 小顶堆,保存较大的一半 self.Smaller = [] # 大顶堆,保存较小的一半 def addNum
2021-04-22 22:16:00 74
原创 剑指 Offer 40. 最小的k个数
剑指 Offer 40. 最小的k个数题目描述输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。快排:class Solution: def getLeastNumbers(self, arr: List[int], k: int) -> List[int]: def quick_sort(arr, l, r): # 子数组长度为 1 时终止递归
2021-04-22 22:07:30 65
原创 将数学表达式转化成树结构
def from_infix_to_prefix(expression): st = list() res = list() priority = {"+": 0, "-": 0, "*": 1, "/": 1, "^": 2} expression = deepcopy(expression) expression.reverse() for e in expression: if e in [")", "]"]: s
2021-04-20 14:07:47 817
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人