好久没更新了,Busy with postgraduate life
今天上课摸个鱼 简单写一点
最近在看一本《TensorFlow计算机视觉原理与实战》
书中的第四章介绍了很多深度学习的激活函数,其中有一些激活函数是在pytorch中常见的,但是有一些激活函数是第一次见到,所以还是记录一下
比较常见的:
output=tf.nn.sigmoid(input,name='sigmoid')
2.Softmax
output=tf.nn.softmax(input,axis=axis,name='softmax')
3.Tanh
output=tf.nn.tanh(input,name='tanh')
4.ReLu
output=tf.nn.relu(input,name='relu')
5.Leaky ReLu
output=tf.nn.leaky_relu(input,alpha=a,name='leaky_relu')
# a是自定义的值 默认为0.2
6.PReLu
PRelu(Parametric ReLu )旨在为不同通道的输入学习不同的权值a
# input表示待激活的张量
def prelu(inp,name):
with tf.variable_scope(name,reuse=tf.AUTO_REUSE) as scope:
# 根据输入数据的最后一个维度来定义参数性状特征
# 对于卷积即通道数,对于全连接即特征数
alpha=tf.get_variable('alpha',inp.get_shape()[-1],initializer=tf.constant_initializer(0.0),dtype=tf.float32)
# 得到负半轴为0,正半轴不变额激活结果
pos=tf.nn.relu(inp)
# 得到正半轴为0 负半轴为ax的激活结构
neg=alpha*(inp-abs(inp))*0.5
# 将两部分激活结果相加
return pos+neg
7.RReLu
rrelu在负半轴的斜率在训练的时候是随机产生的,但是在测试的时候是固定下来的。
def rrelu(inp,is_training,name):
with tf.variable_scope(name) as scope:
# 定义a值额范围
u=1
l=0
# 从均匀分布中随机选取a值
rand_a=tf.Variable(tf.random_uniform(tf.shape(inp),minval=1,maxval=u))
# 若is_training=True,则使用随机生成的rand_a
# 反知相反
alpha=tf.cond(tf.case(is_training,tf.bool),lambda: rand_a, lambda: tf.Variable((u+1)/2.0,dtype=tf.float32))
pos=tf.nn.relu(inp)
neg=alpha*(inp-abs(inp))*0.5
return pos+neg
8.ReLu-6
output=tf.nn.relu6(input,name='relu6')
9.ELU
output=tf.nn.elu(input,name='elu')
10.Swish
output=tf.nn.swish(input,name='swish')
11.Mish
def mish(inp,name):
with tf.variable_scope(name) as scope:
output=inp*tf.nn.tanh(tf.nn.softplus(inp))
return output
今天就先水这么多,天冷大家多穿衣。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有