自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Bert一些重要函数的详解

记录一下embedding_lookup根据词的索引来获取embedding输入是[batch_size,seq_lenth] 输出[batch_size,seq_lenth,embeding_size]def embedding_lookup(input_ids, vocab_size, embedding_size=128, initializer_range=0.02

2021-11-26 14:32:31 1726

原创 谷歌浏览器如何实现书签同步

如何利用Git实现谷歌浏览器的书签同步功能

2023-07-06 09:05:52 770

原创 最小方差划分

举例, 如 nums = [1,3,2,4],我们可以先从左向右求出各个子段和 [1,4,6,10],然后再从右向左求出各个子段和 [4,6,9,10],我们发现对应的子段和为 1 -> 9, 4 -> 6, 6 -> 4。如果不考虑方差的概念,这题可以简化为 “给一个数组,求一个k值,使得前k个数的和 + 后面n-k个数的和最小”。方差概念:平方的均值减去均值的平方,即 D(X) = E(x^2) - [E(X)]^2。给一个数组,求一个k值,使得前k个数的方差 + 后面n-k个数的方差最小。

2023-04-11 16:42:44 629 1

转载 孤立随机森林算法

针对于不同类型的异常,要用不同的算法来进行检测,而孤立森林算法主要针对的是连续型结构化数据中的异常点。使用孤立森林的前提是,将异常点定义为那些 “容易被孤立的离群点” —— 可以理解为分布稀疏,且距离高密度群体较远的点。从统计学来看,在数据空间里,若一个区域内只有分布稀疏的点,表示数据点落在此区域的概率很低,因此可以认为这些区域的点是异常的。异常数据占总样本量的比例很小;异常点的特征值与正常点的差异很大。上图中,中心的白色空心点为正常点,即处于高密度群体中。

2023-03-21 09:19:01 534

转载 一些SQL练习题

【代码】一些SQL练习题。

2023-03-17 10:45:50 142

原创 seq2seq模型

seq2seq的一些用法

2022-08-04 17:20:32 628 2

原创 SHELL教程

shell操作的一些教程

2022-07-27 17:43:09 491

原创 Tensorboard的一些基本的使用方法

tensorboard的一些简单用法

2022-07-20 10:39:45 798

原创 你一定能看懂的tf.nn.bidirectional_dynamic_rnn()详解

bidirectional_dynamic_rnn的使用详解

2022-07-14 10:49:56 717

原创 肯定能让你看懂——tf.nn.max_pool和tf.nn.conv2d()

一文读懂文本中的卷积和池化操作

2022-07-13 15:26:32 264

原创 Batch Normalization 和 Dropout在训练和测试的不同

BN和Dropout在训练和测试时的不同

2022-06-23 19:06:19 407

转载 LSTM的参数量计算

LSTM里面的参数量

2022-06-22 18:36:02 2198

原创 一文读懂多分类的评价指标(微平均、宏平均、加权平均)

多分类下的评价标准

2022-06-22 17:23:10 1907

转载 一文读懂Numpy(Tensorflow)里面的轴(Axis)

关于轴的解释

2022-06-08 17:13:45 955 1

原创 Scala中的方法与函数

scala中的一些方法

2022-06-06 11:29:30 165

原创 EssentialC++

第一章 C++编程基础1.1 如何写c++程序#include <iostream> //输入输出库#include <string>int main() //main函数 程序入口{ string user_name; std::cout << "Enter your name" << std::endl; std::cin >> user_name; std::cout << "hell

2022-05-07 10:36:46 1000

原创 一文概括Spark算子语法

创建Spark上下文环境,并且进行一些配置。

2022-04-02 10:37:36 149

原创 python 合并list的四种方法

1 运算法+list_a = ['a','b','c']list_b = [1,2,3,4]list_ab = list_a + list_bprint(list_ab)结果:['a', 'b', 'c', 1, 2, 3, 4]列表可以保存各种类型对象,所以内容类型不同的列表也可以合并2 extend() 方法直接在原有list上进行扩充list_a = ['a','b','c']list_b = [1,2,3,4]list_a.extend(list_b)print(lis

2022-03-24 17:53:58 19498

转载 python heapq的用法

经常记不住 做个记录一、heapq库简介heapq 库是Python标准库之一,提供了构建小顶堆的方法和一些对小顶堆的基本操作方法(如入堆,出堆等),可以用于实现堆排序算法。堆是一种基本的数据结构,堆的结构是一棵完全二叉树,并且满足堆积的性质:每个节点(叶节点除外)的值都大于等于(或都小于等于)它的子节点。堆结构分为大顶堆和小顶堆,在heapq中使用的是小顶堆:大顶堆:每个节点(叶节点除外)的值都大于等于其子节点的值,根节点的值是所有节点中最大的。小顶堆:每个节点(叶节点除外)的值都小于等于其

2022-03-22 16:06:15 2737

原创 单例模式的一些问题

几种单例模式单例是一个类的单一实例,类或者结构体只有一个实例,是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。单例特点:1 在任何情况下,单例类永远只有一个实例存在。2 单例需要有能力为整个系统提供这一唯一实例。实现一(单线程使用,多线程不安全)#include <iostream>using namespace std;

2022-03-18 16:45:49 861

转载 C++中的智能指针

1 智能指针的基本用法智能指针设计的初衷就是可以帮助我们管理堆上申请的内存,可以理解为开发者只需要申请,而释放交给智能指针。目前 C++11 主要支持的智能指针为以下几种,都定义在 memory 头文件中unique_ptrshared_ptrweak_ptr1.1 unique_ptr先上代码class A{public: void do_something() {}};void test_unique_ptr(bool open){ std::unique

2022-03-16 14:40:56 520

转载 c++之多线程中“锁”(mutex)的用法

1. 锁:mutex锁,是生活中应用十分广泛的一种工具。锁的本质属性是为事物提供“访问保护”,例如:大门上的锁,是为了保护房子免于不速之客的到访;自行车的锁,是为了保护自行车只有owner才可以使用;保险柜上的锁,是为了保护里面的合同和金钱等重要东西……在c++等高级编程语言中,锁也是用来提供“访问保护”的,不过被保护的东西不再是房子、自行车、金钱,而是内存中的各种变量。此外,计算机领域对于“锁”有个响亮的名字——mutex(互斥量),学过操作系统的同学对这个名字肯定很熟悉。Mutex,互斥量,就是互

2022-03-15 17:42:13 13949 1

转载 malloc/free与new/delete

一、基本概念malloc/free:1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 void free(void *FirstByte): 该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。2.内存操作: malloc函数的参数是接受需要分配的内存字节数,如果内存能够满足请求量,那么将会返回:指向被

2022-03-03 18:28:02 816

转载 最通俗易懂的BiLSTM-CRF模型中的CRF层介绍

背景知识你唯一需要了解的是什么叫命名实体识别。如果你不了解神经网络,CRF以及其他相关知识也没有关系,我会用通俗易懂的语言来解释清楚。1 简介在命名实体识别领域,基于神经网络的实现方法是非常流行和常用的。举个例子,该文讲述的用词嵌入和字嵌入的BiLSTM-CRF模型就是其中一种。我将以该模型为例解释CRF层的工作原理。开始之前我们规定在数据集中有两类实体,人名和组织机构名称。所以,其实在我们的数据集中总共有5类标签:B-Person (人名的开始部分)I- Person (人名的中间部分)B

2022-03-01 11:06:08 1389

原创 函数指针-仿函数-Lambda表达式

函数指针将函数赋给一个变量 可以用于函数传递 常用来扩展函数能力#include <vector>//函数指针的表示 (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);void Foreach(const vector<int> & v, void(*func)(int a)){ for(int value:v): func(value);}vo

2022-02-28 15:43:26 806

原创 简单易懂的word2vec

Skip-gram 和 CBOW 模型如果是用一个词语作为输入,来预测它周围的上下文,那这个模型叫做『Skip-gram 模型』而如果是拿一个词语的上下文作为输入,来预测这个词语本身,则是 『CBOW 模型』Skip-gram 和 CBOW 的简单情形我们先来看个最简单的例子。上面说到, y 是 x 的上下文,所以 y 只取上下文里一个词语的时候,语言模型就变成:用当前词 x 预测它的下一个词 y但如上面所说,一般的数学模型只接受数值型输入,这里的 x 该怎么表示呢?显然不能用 Word2ve

2022-02-15 15:39:26 211

原创 L1正则化使参数具有稀疏性的原理

2022-02-11 15:22:38 303

原创 优化器、优化算法Optimizer总结

1 梯度下降法1.1 批量梯度下降1.2 随机梯度下降特点是SGD的噪音较BGD要多,使得SGD并不是每次迭代都向着整体最优化方向。所以虽然训练速度快,但是准确度下降,并不是全局最优。虽然包含一定的随机性,但是从期望上来看,它是等于正确的导数的。缺点:SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。选择合适的learning rate比较困难 ,学习率太低会收敛缓慢,学习率过高会

2022-02-10 15:25:44 219

原创 一文读懂ID3、C4.5、CART

前提1. ID3ID3 算法是建立在奥卡姆剃刀(用较少的东西,同样可以做好事情)的基础上:越是小型的决策树越优于大的决策树。1.1 思想从信息论的知识中我们知道:信息熵越大,从而样本纯度越低,。ID3 算法的核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂。算法采用自顶向下的贪婪搜索遍历可能的决策树空间(C4.5 也是贪婪搜索)。其大致步骤为:初始化特征集合和数据集合;计算数据集合信息熵和所有特征的条件熵,选择信息增益最大的特征作为当前决策节点;更新数据集合和特征集合

2022-02-09 16:32:45 1646

转载 一文读懂LightGBM

1. LightGBM简介GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。GBDT不仅在工业界应用广泛,通常被用于多分类、点击率预测、搜索排序等任务;在各种数据挖掘竞赛中也是致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。而LightGBM(Light Gradient Boosting Machine)是一个实现GBDT

2022-01-20 11:04:52 1221

原创 一文读懂准确率、精准率、召回率、ROC、AUC、F1值

准确率,精准率,召回率分类问题中的混淆矩阵如下TP: 预测为1,预测正确,即实际1FP: 预测为1,预测错误,即实际0FN: 预测为0,预测错确,即实际1TN: 预测为0,预测正确即,实际0准确率 accuracy准确率的定义是预测正确的结果占总样本的百分比,其公式如下:准确率=(TP+TN)/(TP+TN+FP+FN)虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占90%,负样本占10%,样本是严重不

2022-01-18 16:39:52 11324

原创 (几种归一化)一文读懂BN、LN、IN、GN

几种缩写分别对应Batch NormalizationLayer NormalizationInstance NormalizationGroup Normalization需要normalization的原因(1)深度学习包含很多隐含层,每层参数都会随着训练而改变优化,所以隐层的输入分布总会变化,会使得每层输入不再是独立同分布。这就造成,上一层数据需要适应新的输入分布,数据输入激活函数时,会落入饱和区,使得学习效率过低,甚至梯度消失。(2)深度学习会使激活输入分布偏移,落入饱和区,导致反

2022-01-14 18:02:28 1448

原创 DSSM双塔模型损失部分详解

DSSM是把句子映射为向量,利用距离公式来表示文本间的相似度。DSSM在信息检索,文本排序,问答,图片描述,机器翻译等由广泛应用。网络结构DSSM模型的整体结构图如图所示,Q代表Query信息,D表示Document信息。(1)Term Vector:表示文本的Embedding向量;(2)Word Hashing技术:为解决Term Vector太大问题,对bag-of-word向量降维;(3)Multi-layer nonlinear projection:表示深度学习网络的隐层;(4)

2021-12-31 10:45:50 1940

转载 隐马尔科夫模型HMM

1.基本概念1.1定义、假设和应用我们先通过一个简单的例子,来了解隐马尔科夫模型HMM。假设:(1)小明所在城市的天气有{晴天,阴天,雨天}三种情况,小明每天的活动有{宅,打球}两种选项。(2)作为小明的朋友,我们只知道他每天参与了什么活动,而不知道他所在城市的天气是什么样的。(3)这个城市每天的天气情况,会和前一天的天气情况有点关系。譬如说,如果前一天是晴天,那么后一天是晴天的概率,就大于后一天是雨天的概率。(4)小明所在的城市,一年四季的天气情况都差不多。(5)小明每天会根据当天的天气情况

2021-12-28 15:02:42 222

转载 浅显易懂的逻辑回归

今天梳理一下逻辑回归,这个算法由于简单、实用、高效,在业界应用十分广泛。注意咯,这里的“逻辑”是音译“逻辑斯蒂(logistic)”的缩写,并不是说这个算法具有怎样的逻辑性。 前面说过,机器学习算法中的监督式学习可以分为2大类: 分类模型:目标变量是分类变量(离散值); 回归模型:目标变量是连续性数值变量。 逻辑回归通常用于解决分类问题,例如,业界经常用它来预测:客户是否会购买某个商品,借款人是否会违约等等。实际上,“分类”是应用逻辑回归的目的和结果,但中间过程...

2021-12-24 17:47:10 433

转载 一文读懂python装饰器

我们在编程过程中,常常会遇到这种需求:比如,我想开发一款计算器,我已经写好了一堆函数,用于执行各种计算,那么我们需要在执行各种计算函数前,首先对输入的数据进行检查,确保他们必须得是数值才允许执行函数,而不能是字符串;又如,我想编写一个用于计算三角形周长、面积、某个角角度的模块,已经写好几个函数用于计算,那么,在执行计算前,首先要确保输入的三条边长能够构成三角形,再进行计算才有意义;再比如,我想开发某款网络应用,写了一些函数用于实现用户的某些操作,那么,得要先检查确认该用户已经登录了,才允许执行这些操作。这些

2021-12-24 11:45:19 89

原创 一文读懂LSTM和GRU

简介LSTM与GRU

2021-12-08 11:42:48 2586

原创 Focal Loss解析

结论focal loss主要是解决了难易样本不均衡的问题,就是模型容易分类的样本多,不易分类的样本少,顺带还解决了一点样本不均衡的问题解析公式如下1. 类别权重为了应该样本不均衡的问题,对每个类别赋予不同的权重,可以使得模型关注的重点往样本少的类别倾斜。2. 难度权重对于容易分类的样本,我们希望他产生的损失少,比较难得样本就相反,其中Pt代表预测的概率,对于正例,我们希望P越接近1越好,带入会使得难度权重很低,如果模型表现得很差,p很小,此时的loss就会很大,让模型进行梯度更新,从而进行调

2021-12-07 18:03:40 640

转载 详解梯度消失、梯度爆炸及解决方法

1.反向传播2.原因对于激活函数sigmoid(x)求导之后tanh(x)总结本质上是因为神经网络的更新方法,梯度消失是因为反向传播过程中对梯度的求解会产生sigmoid导数和参数的连乘,sigmoid导数的最大值为0.25,权重一般初始都在0,1之间,乘积小于1,多层的话就会有多个小于1的值连乘,导致靠近输入层的梯度几乎为0,得不到更新。梯度爆炸是也是同样的原因,只是如果初始权重大于1,或者更大一些,多个大于1的值连乘,将会很大或溢出,导致梯度更新过大,模型无法收敛。

2021-12-07 16:45:47 191

转载 一文读懂XGBoost(含公式推导)

1.简介XGBoost的全称是eXtreme Gradient Boosting,它是经过优化的分布式梯度提升库,旨在高效、灵活且可移植。XGBoost是大规模并行boosting tree的工具,它是目前最快最好的开源 boosting tree工具包,比常见的工具包快10倍以上。在数据科学方面,有大量的Kaggle选手选用XGBoost进行数据挖掘比赛,是各大数据科学比赛的必杀武器;在工业界大规模数据方面,XGBoost的分布式版本有广泛的可移植性,支持在Kubernetes、Hadoop、SGE、M

2021-12-06 11:22:08 6345

空空如也

空空如也

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

TA关注的人

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