tensorflow2.0神经网络实践,tensorflow人工智能

  tensorflow2.0神经网络实践,tensorflow人工智能

  正文共1232张图,一张图,预计阅读时间7分钟。

  吉图布:https://github.com/sladesha/deep_learning

  之前我写了一个基于Tensorflow的神经网络的MLPs网络,解决用户流失概率的问题。很多人都在问。其实这个网络看起来很清晰,但是写的比较冗长。这里优化了一个版本,方便大家修改后直接使用。

  多层感知器网络

  直接跟你过核心部分:

  1 din _ all=TF . layers . batch _ normalization(inputs=din _ all,name=b1 )

  2

  3 layer _ 1=TF . layers . dense(din _ all,self.layers_nodes[0],activation=tf.nn.sigmoid,use_bias=True,kernel _ regulator=TF . contrib . layers . L2 _ regulator(self . regulation _ rate),name=f1 )

  4layer_1=tf.nn.dropout(layer_1,keep_prob=self.drop_rate[0])

  五

  6 layer _ 2=TF . layers . dense(layer _ 1,self.layers_nodes[1],activation=tf.nn.sigmoid,use_bias=True,kernel _ regulator=TF . contrib . layers . L2 _ regulator(self . regulation _ rate),name=f2 )

  7layer_2=tf.nn.dropout(layer_2,keep_prob=self.drop_rate[1])

  八

  9 layer _ 3=TF . layers . dense(layer _ 2,self.layers_nodes[2],activation=tf.nn.sigmoid,use_bias=True,kernel _ regulator=TF . contrib . layers . L2 _ regulator(self . regulation _ rate),name=f3 )

  在最后的计算过程中,我们定义了多层网络中各层的权重,通过tf.matual进行层间计算,最后通过tf进行正则化。贡献。layers.l2 _ regularizer这次可以通过图像识别中常用的全连接(FC)接口直接计算不同层的权重。我们只需要确定每层的节点数,通过layers_nodes来声明,这样就更清晰了。此外,还增加了辍学部分,以减少过拟合的问题。

  Tf.layers.dense接口信息如下:

  1tf.layers.dense(

  2输入,

  3个单位,

  4激活=无,

  5use_bias=True,

  6kernel _ initializer=无

  7 bias _ initializer=TF . zeros _ initializer(),

  8kernel _ regularizer=无,

  9bias _ regularizer=无,

  10activity _ regularizer=无,

  11kernel _ constraint=无,

  12bias _ constraint=无

  13可训练=真,

  14name=无,

  15重复使用=无

  16)

  Inputs:必选,即要操作的输入数据。

  单位:必须,即神经元的数量。

  激活:可选;默认值为无;如果没有,就是线性激活。

  Use_bias:可选,默认为True,是否使用bias。

  Kernel_initializer:可选;默认值为None,即权重的初始化方法;如果没有,将使用默认的Xavier初始化方法。

  Bias_initializer:可选;默认值为零初始化,即偏置的初始化方法。

  Kernel _ regularizer:可选,缺省为None,对权重施加的正则项。

  Bias _ regularizer:可选,缺省为None,对偏差施加的正则项。

  Activity _ regularizer:可选,缺省为None,对输出施加的正则化项。

  Kernel_constraint,可选,默认为None,是对权重施加的约束项。

  Bias_constraint,可选,缺省为None,对偏移量施加的约束项。

  可训练:可选;默认值为True如果为真,变量将被添加到GraphKeys。可训练变量。

  名称:可选,默认为无,卷积层的名称。

  Reuse:可选,默认为None,Boolean类型,如果为True,则如果名称相同,将被重用。

  另外,我们之前定义Y和y_的时候,把1转换成了[1,0]和[0,1],增加了工程量。这一次我们通过了:

  1 cross _ entropy _ mean=-TF . reduce _ mean(self . y _ * TF . log(self . output 1e-24))

  2self.loss=cross _熵_均值

  直接计算避免了一些无用功。

  最后,之前对梯度的取值没有限制,会造成整体模型波动过大。这个优化也被修改了。有需要也可以参考一下:

  1#我们用learning_rate_base作为速率来训练梯度下降损失函数的解,计算限制梯度后的损失。

  2 opt=TF . train . gradiendescentoptimizer(self . learning _ rate _ base)

  3 train able _ params=TF . train able _ variables()

  4 gradients=TF . gradients(self . loss,trainable _ params)

  5clip_gradients,_=TF . clip _ by _ global _ norm(gradients,5)

  6 self . train _ op=opt . apply _ gradients(zip(clip _ gradients,trainable _ params),global_step=self.global_step)

  MLPs是一种入门级的神经网络算法,在实际工业开发中出现的频率并不高。稍后,我将和你谈谈常见的网络,如FM、FFM、DeepFM、NFM、DIN、MLR等。哪些是产业发展中比较常见的,欢迎您的持续关注。

  完整的代码已经上传到Github。(见文章开头的提示)

  原文链接:https://www.jianshu.com/p/5613f7eed046

  更多简洁方便的分类文章和最新课程及产品信息,请移步至全新呈现的“利岱学院官网”:

  www.leadai.org

  请关注人工智能LeadAI微信官方账号,查看更多专业文章。

  大家都在看。

  LSTM模型在问答系统中的应用

  基于TensorFlow的神经网络解决了用户流失的概观问题。

  算法工程师最常见面试问题整理(一)

  算法工程师最常见面试问题整理(二)

  TensorFlow从1到2 第三章深度学习革命的开端:卷积神经网络

  装饰 Python高级编程

  今天让我们回顾一下Python基础知识。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: