
机器学习
zcc_0015
业精于勤,荒于嬉
展开
-
字符串hash分桶方法
利用hashlib的md5算法作为分桶基数,md5的字符串位数长度是固定的,这样很方便进行下一步的输出再分桶操作:import randomimport stringimport hashlibfrom operator import addfrom functools import reducefrom collections import defaultdictdef md5(key): return hashlib.md5(key.encode()).hexdigest(原创 2020-12-24 15:38:46 · 3110 阅读 · 1 评论 -
tensorflow分布式训练原理
TensorFlow从15年10月开源至今,可谓是发展迅猛,从v0.5到如今的v2.0.0-alpha,经历了无数个功能特性的升级,性能、可用性、易用性等都在稳步提升。相对来说,对于我们工业界,大家可能更关注分布式TensorFlow的发展,本文尝试梳理下分布式TensorFlow从问世到现在经历过的变迁。分布式TensorFlow运行时基本组件用户基于TensorFlow-API编写好代码提交运行,整体架构如下图所示。 Client 可以把它看成是TensorFlow前端,它支持多语.原创 2020-07-09 19:37:54 · 889 阅读 · 0 评论 -
利用tensorflow的VocabularyProcessor增量更新词汇表
1、背景在初版模型,基于训练数据集,利用VocabularyProcessor构建了词汇表,存储文件为old_vocab.pickle。在以后的增量更新中如何把已经保存的上版词汇加载上,同时加入增量中的新词汇,最终形成一版新的词汇。而tf中的VocabularyProcessor没有提供增量更新的api。2、解决办法利用VocabularyProcessor已经提供的接口,vo...原创 2020-02-27 11:14:59 · 690 阅读 · 0 评论 -
tensorflow读取数据的方式
1、第一种方式通过占位符feed_dict的方式读入;2、通过dataset的方式读入:1)导入数据:从一些数据中创建一个Dataset实例;2)创建一个迭代器:通过使用创建的数据集来制作一个迭代器实例迭代遍历数据集;3)使用数据:通过使用创建的迭代器,我们可以得到数据集的元素馈送给模型;1 从numpy导入数据常见的情况下,我们有一个numpy数组,我们想通过它传送到te...原创 2019-12-27 14:42:09 · 318 阅读 · 0 评论 -
tensorflow各优化器总结
1、RMSprop 算法是一种自适应学习率的优化算法,其核心思想是通过统计相似梯度的平均值的方式来自动地调整学习率。一般来讲,我们会在梯度算法中引入一个衰减系数,使每一次衰减都有一定的比例。在TensorFlow 中,一般使用tf.train.RMSPropOptimizer()方法来创建一个优化器。2、Momentum 算法也是神经网络的常用优化算法之一,并且也属于梯度下降的变形算法。Mom...原创 2018-11-26 21:51:51 · 777 阅读 · 0 评论 -
bert使用总结
1、bert的开源代码:https://github.com/google-research/bert2、bert的service接口:将bert封装成了clinet和service框架,通过客户端向服务器发起请求的方式使用https://github.com/hanxiao/bert-as-service/3、bert的简单使用https://github.com/Ins...原创 2019-01-09 20:20:49 · 1794 阅读 · 1 评论 -
tensorflow一个进程中分析加载多个模型的方法
分别创建多个会话,多个图,每个会话中运行不同的图,最后关闭会话。graph1 = tf.Graph()graph2 = tf.Graph()sess1 = tf.Session(graph=graph1) sess2 = tf.Session(graph=graph2)with sess1.as_default(): with graph1.as_default(): ...原创 2019-02-07 16:46:10 · 2830 阅读 · 0 评论 -
tensorflow微调模型,如何中断梯度
import tensorflow as tf # Load the VGG-16 model in the default graph vgg_saver = tf.train.import_meta_graph(dir + '/vgg/results/vgg-16.meta') # Access the graph vgg_graph = tf.get_default_graph()...原创 2019-02-07 23:27:47 · 512 阅读 · 0 评论 -
机器学些评价指标NDCG和AUC,KS的计算
1、NDCGNDCG,Normalized Discounted cumulative gain 直接翻译为归一化折损累计增益,可能有些晦涩,没关系下面重点来解释一下这个评价指标。这个指标通常是用来衡量和评价搜索结果算法(注意这里维基百科中提到了还有推荐算法,但是我个人觉得不太适合推荐算法,后面我会给我出我的解释)。DCG的两个思想: 1、高关联度的结果比一般关联度的结果更影响最终的指标...原创 2019-09-27 17:14:12 · 837 阅读 · 0 评论 -
sigmoid交叉熵和softmax交叉熵的区别
1、tf.nn.softmax_cross_entropy_with_logits原理要求logits与label形状一致, 是先对logits做softmax之后,再与label做交叉熵运算loss的输出形状:形状为[batch_size, 1]import tensorflow as tf#三个分类,交叉熵通过了sigma求和,因此一个样本对应一个交叉熵,batch_siz...原创 2019-10-11 14:51:33 · 3182 阅读 · 0 评论 -
tensorflow相关函数学习
1、tf.argmax( , )中有两个参数,第一个参数是矩阵,第二个参数是0或者1。0表示的是按列比较返回最大值的索引,1表示按行比较返回最大值的索引;2、tf.equal(A, B)是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回True,反正返回False,返回的值的矩阵维度和A是一样的;3、tf.cast():cast( x, dtype, name=None )将x的数...原创 2018-11-24 12:01:55 · 183 阅读 · 0 评论 -
tensorflow学习
1、对于minist的数据集上搭建dnn网络,并不是层数越多越好,2个隐层的结果要坏于一个隐层的结果, 激活函数选用relu效果要好2、关于softmax层输出理应是0~1的小数, 一旦只输出0或1, 那表明模型对自己的判断相当“自信”可供参考的改善措施如下:(1)避免使用非线性的激活函数, 比如 relu或者tanh(2)wights 和 bias 初始化是否过大...原创 2018-08-10 17:01:21 · 286 阅读 · 0 评论 -
动态规划求解编辑距离
一、动态规划算法 动态规划算法通常基于一个递推公式及一个或多个初始状态。当前问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式复杂度,因此它比回溯法、暴力法要快。首先,我们要找到某个状态的最优解,然后在它的帮助下,找到下一个状态的最优解。要做的是抽象出动态规划的状态和状态转移方程(递推公式)。二、编辑距离1、问题描述设A和B是2个字符串。要用最少的字符操原创 2015-07-20 23:51:24 · 1242 阅读 · 0 评论 -
Light-lda部署安装过程
一、下载light-lda源码1、wget https://github.com/Microsoft/lightlda2、unzip lightlda-master.zip ,cd lightlda-master3、修改 build.sh中,将git clone -b multiverso-initial git@github.com:Microsoft/multivers原创 2016-05-26 14:21:26 · 6465 阅读 · 4 评论 -
N-gram
N-Gram是大词汇连续语音识别中常用的一种语言模型,对中文而言,我们称之为汉语语言模型(CLM, Chinese Language Model)。汉语语言模型利用上下文中相邻词间的搭配信息,在需要把连续无空格的拼音、笔划,或代表字母或笔划的数字,转换成汉字串(即句子)时,可以计算出具有最大概率的句子,从而实现到汉字的自动转换,无需用户手动选择,避开了许多汉字对应一个相同的拼音(或笔划串,或数字串转载 2016-11-29 12:08:44 · 340 阅读 · 0 评论 -
在线广告预估ctr的AUC计算方法
一、auc选特征的原理在优化模型的时候,我们期望能够加入足够多有典型区分度的特征。特征有良好的区分度,有助于在筛选广告阶段进行准确的排序。准确的排序意味着,在排序好的候选广告中,可以选择top1,或者top2等这样高预估ctr的广告进行展现。也就是说,加入的特征能够触发高ctr高的广告排在前面。二、ctr的auc计算方法(1)定义法: 根据discrimination th...原创 2017-08-16 14:53:36 · 6099 阅读 · 0 评论 -
机器学习之特征编码总结
已知三个feature,三个feature分别取值如下:feature1=[“male”, “female”]feature2=[“from Europe”, “from US”, “from Asia”]feature3=[“uses Firefox”, “uses Chrome”, “uses Safari”, “uses Internet Explorer”]转载 2017-08-02 19:27:55 · 6125 阅读 · 0 评论 -
protobuf中的Base 128 Varints类型分析
Google Protobuf里面提出了“Base 128 Varints”编码,这是一种变字节长度的编码,官方描述为:varints是用一个或多个字节序列化整形的一种方法。我理解要点有三个(1)操作是序列化(2)操作对象是整形(3)变长编码。重点是最后一点,他是如何编码的呢? (1)除了最后一个字节,varint中的每个字节的最高位设为1,表示后面还有字节出现转载 2017-07-27 13:50:34 · 1491 阅读 · 0 评论 -
广告相关业务指标总结
•CPM1= Charge / FSearch * 1k, CPM2 = Charge / Show * 1k, CPM3 = Charge / ADSearch *1k •CTR1= Click / FSearch, CTR2 = Click / Show, CTR3 = Click / ADSearch •ASN= Show / ADSearch, ACP = Charge / Clic •P...转载 2018-06-11 16:30:02 · 3340 阅读 · 0 评论 -
tensorflow学习笔记
一、BatchNormalization的作用批标准化(batch normalization,BN)一般用在激活函数之前,使结果x=Wx+bx=Wx+b 各个维度均值为0,方差为1。通过规范化让激活函数分布在线性区间,让每一层的输入有一个稳定的分布会有利于网络的训练。优点: 加大探索步长,加快收敛速度。更容易跳出局部极小。破坏原来的数据分布,一定程度上防止过拟合。解决收敛速度慢和梯度爆炸。ten...原创 2018-07-08 13:58:37 · 331 阅读 · 0 评论 -
机器学习相似度计算方法选择理论依据
在分类聚类算法,推荐系统中,常要用到两个输入变量(通常是特征向量的形式)距离的计算,即相似性度量.不同相似性度量对于算法的结果,有些时候,差异很大.因此,有必要根据输入数据的特征,选择一种合适的相似性度量方法。令X=(x1,x2,..,xn)T,Y=(y1,y2,...yn)T为两个输入向量, 1.欧几里得距离(Euclidean distance)-EuclideanDistance原创 2015-07-12 22:53:39 · 2419 阅读 · 0 评论