【一】TensorFlow神经网络模型构建之神经元函数及优化方法

TensorFlow神经网络模型构建主要涉及如下几块:神经元函数、卷积函数、池化函数、分类函数、优化方法。下面分别对这几块进行展开说明:

神经元函数及优化方法

神经网络之所以能解决非线性问题(如语音、图像识别等),本质上就是激活函数加入了非线性因素,弥补了线性模型的表达力,把“激活的神经元的特征”通过函数保留并映射到下一层

激活函数会更改输入数据的维度(输入和输出的维度是相同的)。TensorFlow中有如下激活函数,输入均为需要计算的x(Tensor),输出均为与x数据类型相同的张量(Tensor)。常见的激活函数有Sigmoid,Tanh,ReLU、softplus。

1、Sigmoid函数使用方法
import tensorflow as tf
data=tf.constant([[1.0,2.0],[1.0,2.0],[1.0,2.0]])
with tf.compat.v1.Session() as sess:
    print(sess.run(tf.sigmoid(data)))

运行结果是如下:
在这里插入图片描述
Sigmoid函数的优点在于它的输出映射在(0,1)内,单调连续,非常适合于用作输出层,并且求导比较容易。缺点在于其软饱和性

软饱和性:指激活函数 h ( x ) h(x) h(x)在取值趋于无穷大时,它的一阶导数趋于0
硬饱和性:指当 ∣ x ∣ > c |x|>c x>c时,其中c为常数, f ′ ( x ) = 0 f^{'}(x)=0 f(x)=0

一旦落入软饱和区, f ′ ( x ) f^{'}(x) f(x)就会变得接近于0,容易产生梯度消失。

梯度消失指在更新模型参数时采用链式求导法则反向求导,越往梯度越

最终的结果是达到一定深度后梯度对于模型的更新就没有任何贡献。

2、ReLU函数使用方法

ReLU函数定义为 f ( x ) = m a x ( x , 0 ) f(x)=max(x,0) f(x)=max(x,0)。softplus函数定义为 f ( x ) = l o g ( 1 + e x p ( x ) ) f(x)=log(1+exp(x)) f(x)=log(1+exp(x)),可以看作是ReLU函数的平滑版本。Relu和softplus函数代码示例及图形如下:

import numpy as np
import matplotlib.pyplot as plt
def relu_tugrp():
 x=np.arange(-100, 100, 1)
 softplus=np.log(1+np.exp(x))
 relu=np.maximum(0,x)
 plt.subplot(221)
 plt.plot(x,softplus,label='softplus')
 #显示图像的label
 plt.legend()
 
 #创建一个子图
 plt.subplot(222)
 plt.plot(x,relu,label='relu')
 #显示图像的label
 plt.legend()
 #画网格线
 plt.grid(True)

relu_tugrp()

在这里插入图片描述
使用TensorFlow中的relu、reluu6、crelu、softplus函数示例如下:

import tensorflow as tf
data=tf.constant([[-1.0,2.0],[1.0,-2.0],[1.0,2.0]])
with tf.compat.v1.Session() as sess:
    print(sess.run(tf.nn.relu(data)))
    print(sess.run(tf.nn.softplus(data)))
    print(sess.run(tf.nn.relu6(data)))
    print(sess.run(tf.nn.crelu(data)))

在这里插入图片描述

3、dropout函数使用方法

一个神经元将以概率keep_prob决定是否被抑制。如果被抑制,则该神经元的输出为0;如果不被抑制,那么该神经元的输出值将被放大到原来的 1 k e e p p r o b \frac{1}{keep_prob} keepprob1倍。
在默认情况下,每个神经元是否被抑制是相互独立的。但是否被抑制可以通过noise_shape来调节。当noise_shape[i]==shape(x)[i]时,x中的元素是相互独立的。如果shape(x)=[k,l,m,n],x中的维度顺序分别为批、行、列和通道;如果noise_shape(x)=[k,l,m,n],那么每个批和通道相互独立,行与列相互关联,要么都是0,要么都是原来的值。示例代码:

import tensorflow as tf
data=tf.constant([[-1.0,2.0,3.0,4.0]])
with tf.compat.v1.Session() as sess:
    print(sess.run(tf.nn.dropout(data,0.5,noise_shape=[1,4])))
    print(sess.run(tf.nn.dropout(data,0.5,noise_shape=[1,1])))

在这里插入图片描述

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WEL测试

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值