
深度学习
文章平均质量分 93
yftadyz
毕业于浙江大学数学系,专注于机器学习、深度学习领域,希望使用机器学习、深度学习算法解决实际生产应用问题。
展开
-
图神经网络开发工具DGL源代码分析(1):update_all
目录背景函数API调用路径总结DGL官方网址:https://www.dgl.ai/背景DGL是目前非常流行的图神经网络开发工具,基于pytorch实现。虽然DGL也包含tensorflow的API,但是教程是基于pytorch的,所以想使用DGL的同学建议提前掌握pytorch,这样学习DGL会更加高效和容易。本篇是“图神经网络开发工具DGL源代码分析”的第一篇,这个系列主要是总结博主学习DGL过程中的心得体会,也可以看作是学习笔记吧。整理出来既是方便自己日后查阅,也是希望能和大家分享,帮助更多入原创 2021-05-04 20:34:23 · 1432 阅读 · 1 评论 -
静态图谱
目录 计算图谱静态图与动态图tf.Session()tf.Session().run()静态图保存静态图重载计算图谱自动微分是深度学习建模工具必备的一个技能点。我们将损失函数看作是若干基本函数的 复合函数,这里基本函数包括加减乘除、sin、cos、指数函数、幂函数、对数函数等。我们使用链式法则进行复合函数的导数,比如df(g)=df|g * dg。如果将基本函数看作节点,我们可以将复合函数使用图进行表示,求导的链式法则可以方便的在这个图上进行。这就是计算图谱提出的背景。静态图与动态图tensorfl原创 2020-11-01 13:27:00 · 265 阅读 · 0 评论 -
pytorch的detach()、detach_()和.data的用法
转发一篇描述detach()、detach_()和.data在阻断反向传播中的不同,写得很好,通过实验对比得出清晰结论。原文链接这里只贴出得出的结论:detach()返回一个新的Variable,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得到的这个Variable永远不需要计算其梯度,不具有grad。即使之后重新将它的requires_grad置为true,它也不会具有梯度grad这样我们就会继续使用这个新的Variable进行计算,后面转载 2020-10-17 10:48:49 · 1278 阅读 · 0 评论 -
LightGBM分箱算法
目录等距分箱与等频分箱LightGBM分箱算法等距分箱与等频分箱LightGBM分箱算法在深度学习中,通常需要对连续特征进行离散化处理,这样可以使用嵌入向量表示特征。离散化处理的方法,常见的有等距分箱和等频分箱。等距分箱的缺点是,数据容易集中在某个区间内,导致编号基本相同,丢失大量信息。并且等距分箱通常需要一定的专家知识。等频分箱的优点是,当数据集中在某个区间内时也不会编号完全相同,克服了等距分箱的这个缺点。而等频分箱的缺点是,当大量数据取值相同时,比如都为0,那么等频分箱就会将这些取值相同的数据原创 2020-09-08 13:50:43 · 2533 阅读 · 2 评论 -
目前见过的对transfer learning最好的解释
今天博主在查GLUE的资料时,发现一个对transfer learning非常好的阐述,所以在这里和大家分享,原文链接:https://mccormickml.com/2019/11/05/GLUE/Unlike single task models that are designed for and trained end-to-end on a specific task, transfer learning models extensively train their large network o原创 2020-09-04 15:40:34 · 408 阅读 · 0 评论 -
深度学习中序列模型(RNN、GRU、LSTM、Transformer)的本质理解
本文详细描述了RNN、GRU、LSTM模型架构的设计理念,希望能帮助大家更深入的理解这几大模型。模型的intuition搞清楚了,复杂的数学公式也就不再显得复杂了,更像是水到渠成的结果。原创 2020-07-31 12:50:22 · 5841 阅读 · 0 评论 -
tensorflow小技巧--binary_crossentropy与BinaryCrossentropy的区别
tf.keras.losses下面有两个长得非常相似的损失函数,binary_crossentropy(官网传送门)与BinaryCrossentropy(官网传送门)。从官网介绍来看,博主也没看出这两个损失函数有什么区别,直到今天才明白过来,不多说,直接上代码:#set loss funcloss=tf.losses.BinaryCrossentropy()这样声明一个损失函数是没有问题的。loss=tf.losses.binary_crossentropy()TypeError: binar原创 2020-07-02 12:01:40 · 7989 阅读 · 0 评论 -
L1与L2正则的联系与区别
目录前言L1正则和L2正则的区别L1正则为什么更容易得到稀疏解正则的作用前言本文主要梳理一下L1正则和L2正则的关系,主要包括回答以下几个问题:1、L1正则和L2正则的区别2、L1正则为什么更容易得到稀疏解3、正则的作用L1正则和L2正则的区别对于这个问题,可以看下知乎的这个解答https://zhuanlan.zhihu.com/p/35356992L1更容易得到稀疏解,就是参数会出现很多零;L2会使得参数取值更加平滑,即参数取值会比较小;从实际应用效果来看,L2效果比较好。L1正则为什原创 2020-07-26 22:34:23 · 893 阅读 · 0 评论 -
时间序列建模大杀器Transformer原理总结
目录前言模型结构前言博主最近拜读了Transformer的那篇paper,Pre-training of Deep Bidirectional Transformers for Language Understanding,将自己的学习体会在这里分享。模型结构这是transformer encoder-decoder结构图,适用于sequence2sequence模型,也就是语音识别、机器翻译等场景。如果是语言模型,我们需要的是transformer decoder,如下:Multi-head原创 2020-07-19 22:34:53 · 5216 阅读 · 3 评论 -
tensorflow小技巧--时间序列模型中的复杂损失函数计算方法
BERT的MLM是我见过的比较复杂的优化任务了,我以此为例分享一下对于这种比较复杂的损失函数如何计算。先说下这个MLM是什么,如下图所示(摘自BERT的原始论文):所以这个任务就是将sentence中一些token进行掩盖,模型会输出这些掩盖的token的隐藏状态,将这些隐藏状态输入softmax可以得到候选单词的概率分布,这样根据ground truth就可以计算cross entropy了。原理比较简单,要想使用tf高效实现,博主着实费了一些脑细胞。我的计算方法如下:import tensorfl原创 2020-07-19 22:31:10 · 2057 阅读 · 0 评论 -
WordPiece与BPE的区别
博主在网上搜BERT的wordPiece时,发现很多文章都说BERT的wordPiece就是BPE(Byte-Pair Encoding), 这个说法其实是不对的,wordPiece和BPE有相似性,但是并不是一回事。WordPiece是这个:WordPiece需要在训练集上训练一个语言模型,每次挑选能最大化减少logloss的word unit。BPE:BPE是统计词对的频数,每次挑选频数最大的那个作为word unit。所以,wordPiece和BPE可不是一回事儿哦。最后总结一下,BER原创 2020-07-18 22:29:44 · 3056 阅读 · 1 评论 -
tensorflow常用模型开发小函数总结(持续补充中)
函数目录tf.gathertf.concattf.expand_dimstf.sequence_masktf.tile使用版本:tensorflow2.2tf.gathertf.gather(params, indices, validate_indices=None, axis=None, batch_dims=0, name=None)官方API用法:在查询高维稀疏特征的对应嵌入向量值时,非常好用。高维稀疏特征就是类似于商品id这种有非常多离散取值的特征字段,通常建模时会先对它进行编码,原创 2020-07-01 23:14:47 · 241 阅读 · 0 评论