Deep Interest Network for Click-Through Rate Prediction(KDD2018)
在tensorflow中,为了 节约变量存储空间 ,我们常常需要通过共享 变量作用域(variable_scope) 来实现 共享变量 。
当注意力机制都已经变成很tasteless的手法的时候,使用或者魔改注意力机制一定要专注讲好自己的故事:即『为什么要用Attention,为什么要魔改Attention』
用于定义创建变量(层)的ops的上下文管理器。这个上下文管理器验证(可选的)值来自同一个图,确保图是默认图,并推入名称范围和变量范围。如果name_or_scope不为None,则按原样使用。如果name_or_scope为None,则使用default_name。在这种情况下,如果以前在相同的范围中使用过相同的名称,则通过在名称后面附加_N使其惟一。变量作用域允许您创建新变量并共享已创建的变量,同时提供检查以防止意外创建或共享。
之前我们提到使用SqueezeSeg进行了三维点云的分割,由于采用的是SqueezeNet作为特征提取网络,该方法的处理速度相当迅速(在单GPU加速的情况下可达到100FPS以上的效率),然而,该方法存在如下的问题:
上一章我们聊了聊quick-thought通过干掉decoder加快训练, CNN—LSTM用CNN作为Encoder并行计算来提速等方法,这一章看看抛开CNN和RNN,transformer是如何只基于attention对不定长的序列信息进行提取的。虽然Attention is All you need论文本身是针对NMT翻译任务的,但transformer作为后续USE/Bert的重要组件,放在embedding里也没啥问题。以下基于WMT英翻中的任务实现了transfromer,完整的模型代码详见DSXiangLi-Embedding-transformer
Deep Interest Evolution Network for Click-Through Rate Prediction(AAAI2019)
法一: 循环打印 模板 for (x, y) in zip(tf.global_variables(), sess.run(tf.global_variables())): print '\n', x, y 实例 # coding=utf-8 import tensorflow as tf def func(in_put, layer_name, is_training=True): with tf.variable_scope(layer_name, reuse=tf.AUT
本节学习来源斯坦福大学cs20课程,有关本节源代码已同步只至github,欢迎大家star与转发,收藏!
一个程序中有tf.variable_scope()函数,第一次运行报错之后,第二次修改bug再次运行会报如下错误:
前言:主要介绍一下,TensorFlow变量作用域和可视化,变量作用域能更好底可视化展示数据流图 TensorFlow变量作用域 通过tf.Variable我们可以创建变量,但是当模型复杂的时候,需要构建大量的变 量集,这样会导致我们对于变量管理的复杂性,而且没法共享变量(存在多个相 似的变量)。针对这个问题,可以通过TensorFlow提供的变量作用域机制来解决, 在构建一个图的时候,就可以非常容易的使用共享命名过的变量。 变量作用域机制在TensorFlow中主要通过两部分组成: tf.get_va
第一章我们简单了解了NER任务和基线模型Bert-Bilstm-CRF基线模型详解&代码实现,这一章按解决问题的方法来划分,我们聊聊多任务学习,和对抗迁移学习是如何优化实体识别中边界模糊,垂直领域标注样本少等问题的。Github-DSXiangLi/ChineseNER中提供了bert_bilstm_crf_mtl多任务, 和bert_bilstm_crf_adv对抗迁移两个模型,支持任意NER+NER,CWS+NER的Joint Training。
在本系列的推荐系统遇上深度学习(十八)--探秘阿里之深度兴趣网络(DIN)浅析及实现中,我们介绍了阿里的深度兴趣网络(Deep Interest Network,以下简称DIN),时隔一年,阿里再次升级其模型,提出了深度兴趣进化网络(Deep Interest Evolution Network,以下简称DIEN,论文地址:https://arxiv.org/pdf/1809.03672.pdf),并将其应用于淘宝的广告系统中,获得了20.7%的CTR的提升。本篇,我们一同来探秘DIEN的原理及实现。
如果你定义的变量名称在之前已被定义过,则TensorFlow 会引发异常。可使用tf.get_variable( ) 函数代替tf.Variable( )。如果变量存在,函数tf.get_variable( ) 会返回现有的变量。如果变量不存在,会根据给定形状和初始值创建变量。
书中的第四章介绍了很多深度学习的激活函数,其中有一些激活函数是在pytorch中常见的,但是有一些激活函数是第一次见到,所以还是记录一下
1 简介 tf.Variable() tf.Variable(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None) tf.get_variable() tf.get_variable(name, shape
1、使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错
探究 batch normalization 过程中的 decay 参数项 在 train 和 test 过程中的不同作用。
文章首先介绍了现有的点击率 (CTR) 预估模型大都满足相同的模式: 先将大量的稀疏类别特征 (Categorical Features) 通过 Embedding 技术映射到低维空间, 再将这些特征的低维表达按照特征的类别进行组合与变换 (文中采用 in a group-wise manner 来描述), 以形成固定长度的向量 (比如常用的 sum pooling / mean pooling), 最后将这些向量 concatenate 起来输入到一个 MLP (Multi-Layer Perceptron) 中, 从而学习这些特征间的非线性关系.
可视化 batch normalization 过程中的 tensor演化(以输入一张[1, 4 , 4, 1]的图片为例)
tensorflow在1.4版本引入了keras,封装成库。现想将keras版本的GRU代码移植到TensorFlow中,看到TensorFlow中有Keras库,大喜,故将神经网络定义部分使用Keras的Function API方式进行定义,训练部分则使用TensorFlow来进行编写。一顿操作之后,运行,没有报错,不由得一喜。但是输出结果,发现,和预期的不一样。难道是欠拟合?故采用正弦波预测余弦来验证算法模型。
前四篇文章我们介绍了 PaddleFluid 和 TensorFlow 的设计原理基本使用概念,分别通过在两个平台上实现完全相同的模型完成图像分类,语言模型和序列标注三个任务,了解我们的使用经验如何在两个平台之间迁移,以此来了解非序列模型和序列模型在两个平台之上设计和使用的差异。
在现实场景中,由于光线、视角等问题会导致我们拍摄出来的照片比较阴暗,具体的图片如下图中的1、3、5列所示,然后这些阴暗的图片不仅会影响我们的观察,而且会极大的影响计算机视觉处理算法的效果,2、4、6列表示的是使用了低光照图像增强算法之后的效果。本文主要针对低光照的图片展开论述,对经典的一些低光照图像增强算法进行了总结和初略的分析。
DeepFM是一个集成了FM和DNN的神经网络框架,思路和Google的Wide&Deep相似,都包括wide和deep两部分。W&D模型的wide部分是广义线性模型,DeepFM的wide部分则是FM模型,两者的deep部分都是深度神经网络。DeepFM神经网络部分,隐含层的激活函数用ReLu和Tanh做信号非线性映射,Sigmoid函数做CTR预估的输出函数。
本篇使用TensorFlow框架,利用MNIST手写数字数据集来演示深度学习的入门概念。其训练集共有60000个样本(图片和标签),测试集有10000个样本。手写数字的图片都是尺寸为28*28的二值图:
版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 https://blog.csdn.net/jinxiaonian11/article/details/83105439
代码来源:https://github.com/Kyubyong/transformer
自动编码器(一下简称AE)属于生成模型的一种,目前主流的生成模型有AE及其变种和生成对抗网络(GANs)及其变种。随着深度学习的出现,AE可以通过网络层堆叠形成深度自动编码器来实现数据降维。通过编码过程减少隐藏层中的单元数量,可以以分层的方式实现降维,在更深的隐藏层中获得更高级的特征,从而在解码过程中更好的重建数据。
当谈到在 TensorFlow 上写代码时,我们总会将它和 PyTorch 进行对比,然后讨论 TensorFlow 框架是多么的复杂以及 tf.contrib 的某些部分为什么那么糟糕。此外,我还认识许多数据科学家,他们只用预先写好的、可以克隆的 GitHub 库和 TensorFlow 交互,然后成功使用它们。对 TensorFlow 框架持有这种态度的原因各不相同,想要说清楚的话恐怕还得另外写个长篇,现在我们要关注的是更实际的问题:调试用 TensorFlow 写的代码,并理解其主要特性。
DIEN是阿里深度兴趣进化网络(Deep Interest Evolution Network)的缩写。
本案例适合作为大数据专业TensorFlow深度学习实战课程的配套教学案例。通过本案例,能够达到以下教学效果:
这一章我们来聊聊skip-thought的三兄弟,它们在解决skip-thought遗留问题上做出了不同的尝试【Ref1~4】, 以下paper可能没有给出最优的解决方案(对不同的NLP任务其实没有最优只有最合适)但它们提供了另一种思路和可能性。上一章的skip-thought有以下几个值得进一步探讨的点
在图像识别/目标检测领域,基本上CNN的天下,从基础的AlexNet,再到后面更深的GoogleNet、VGGNet等,再到收敛速度更快、泛化性更强ResNet等残差网络,从2012年到现在CNN网络在图像识别/目标检测领域可谓是一个很好的方法。
之前没有学过概率编程?对 TensorFlow Probability(TFP)还不熟悉?下面我们为你准备了入门级实操性教程——《Bayesian Methods for Hackers》(教程查看地址:https://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/#tensorflow),这门教程的实例现在也在 TFP 中开放了。作为对所有人开放的开源资源,TFP 版本的概率编程对之前用 PyMC3 写的那版进行了补充。
在本系列的上一篇中,我们大致介绍了一下知识图谱在推荐系统中的一些应用,我们最后讲到知识图谱特征学习(Knowledge Graph Embedding)是最常见的与推荐系统结合的方式,知识图谱特征学习为知识图谱中的每个实体和关系学习到一个低维向量,同时保持图中原有的结构或语义信息,最常见的得到低维向量的方式主要有基于距离的翻译模型和基于语义的匹配模型。
如果您使用过 TensorFlow 1.x,则本部分将重点介绍迁移到 TensorFlow 2.0 所需的总体概念更改。 它还将教您使用 TensorFlow 可以进行的各种 AIY 项目。 最后,本节向您展示如何将 TensorFlow Lite 与跨多个平台的低功耗设备一起使用。
近年来,股票预测还处于一个很热门的阶段,因为股票市场的波动十分巨大,随时可能因为一些新的政策或者其他原因,进行大幅度的波动,导致自然人股民很难对股票进行投资盈利。因此本文想利用现有的模型与算法,对股票价格进行预测,从而使自然人股民可以自己对股票进行预测。 理论上,股票价格是可以预测的,但是影响股票价格的因素有很多,而且目前为止,它们对股票的影响还不能清晰定义。这是因为股票预测是高度非线性的,这就要预测模型要能够处理非线性问题,并且,股票具有时间序列的特性,因此适合用循环神经网络,对股票进行预测。 虽然循环神经网络(RNN),允许信息的持久化,然而,一般的RNN模型对具备长记忆性的时间序列数据刻画能力较弱,在时间序列过长的时候,因为存在梯度消散和梯度爆炸现象RNN训练变得非常困难。Hochreiter 和 Schmidhuber 提出的长短期记忆( Long Short-Term Memory,LSTM)模型在RNN结构的基础上进行了改造,从而解决了RNN模型无法刻画时间序列长记忆性的问题。 综上所述,深度学习中的LSTM模型能够很好地刻画时间序列的长记忆性。
猪年快乐之TensorFlow中实现word2vec及如何结构化TensorFlow模型
前一篇讲解了TensorFlow如何保存变量和神经网络参数,通过Saver保存神经网络,再通过Restore调用训练好的神经网络。本文将详细讲解循环神经网络RNN和长短期记忆网络LSTM的原理知识,并采用TensorFlow实现手写数字识别的RNN分类案例。
tf.name_scope()对tf.get_variable_scope().reuse_variables() 不起作用
Flappy Bird是一款简单操作的手机游戏,在游戏中有一只飞翔的小鸟,在飞行中会遇到管道障碍物,玩家需要操控小鸟往上飞,飞行过程中不能坠地也不能触碰障碍物,不断的实行动作会飞的越来越高;如果不采取飞行动作,则会快速下降。因此玩家要使用合适的策略控制小鸟飞行,使小鸟不会坠地同时能顺利地穿越障碍物。本案例使用强化学习算法DQN训练智能体,使其最终学会玩Flappy Bird游戏。
TensorFlow中的变量一般就是模型的参数。当模型复杂的时候共享变量会无比复杂。
在本节中,我们将学习两个重要的 DL 模型以及这些模型的演化路径。 我们将通过一些示例探索它们的架构和各种工程最佳实践。
今天说一下tensorflow的变量共享机制,首先为什么会有变量共享机制? 这个还是要扯一下生成对抗网络GAN,我们知道GAN由两个网络组成,一个是生成器网络G,一个是判别器网络D。G的任务是由输入的隐变量z生成一张图像G(z)出来,D的任务是区分G(z)和训练数据中的真实的图像(real images)。所以这里D的输入就有2个,但是这两个输入是共享D网络的参数的,简单说,也就是权重和偏置。而TensorFlow的变量共享机制,正好可以解决这个问题。但是我现在不能确定,TF的这个机制是不是因为GAN的提出
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/77856961
这篇文章主要讲讲TensorBoard的基本使用以及name_scope和variable_scope的区别
在训练深度网络时,为了减少需要训练参数的个数(比如具有simase结构的LSTM模型)、或是多机多卡并行化训练大数据大模型(比如数据并行化)等情况时,往往需要共享变量。另外一方面是当一个深度学习模型变得非常复杂的时候,往往存在大量的变量和操作,如何避免这些变量名和操作名的唯一不重复,同时维护一个条理清晰的graph非常重要。 ==因此,tensorflow中用tf.Variable(),tf.get_variable(),tf.Variable_scope(),tf.name_scope()几个函数来实现
其中的全连接层还引入了dropout的概念。dropout在训练时会随机将部分节点的输出改为0(使神经元以一定概率失活)。dropout可以避免过拟合(overfitting)问题。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/details/76695935
领取专属 10元无门槛券
手把手带您无忧上云