1、tf.sigmoid函数 应用sigmoid函数可以将输出压缩至0~1的范围
计算公式为
f ( x ) = 1 1 + e ? x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+e?x1?
文章图片
tf.sigmoid()的函数的用法为:
tf.sigmoid
(
x,
name=None
)
参数说明:
- x :类型为float16, float32, float64, complex64, or complex128的tensor
- name: 操作的名称(可选)。
import tensorflow as tfa = tf.linspace(-6.0, 6, 10 )
# Out[5]:
# tf.sigmoid(a)
# Out[6]:
# x = tf.random.normal([1, 28, 28]) * 5
tf.reduce_min(x), tf.reduce_max(x)
# Out[8]:
# (,
#)x = tf.sigmoid(x)
tf.reduce_min(x), tf.reduce_max(x)
# Out[10]:
# (,
#)
注:对于分类来讲,sigmoid并不能完全达到想要的功能,比如:对于一个10分类,它的结果范围为0~9,并且想要∑ i ? [ 0 ~ 9 ] p ( y = i ∣ x ) = 1 \sum_{i\epsilon [0~9]} p(y = i | x) = 1 ∑i?[0~9]?p(y=i∣x)=1,而sigmoid只能保证单个的点,不能保证所有的点的和为1,要想实现这个功能,见下面的softmax2、tf.nn.softmax函数
文章图片
注,一般将没有加激活函数的称为Logits,加了softmax后称为Probabilities,经过softmax后,有把最大值放大的过程,相当于把强的变得更强,把弱的变得更弱。用法:
tf.nn.softmax
(
logits,
axis=None,
name=None,
dim=None
)
参数说明:
- logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64。
- axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度。
- name:操作的名称(可选)。
- dim:axis的已弃用的别名。
s o f t m a x = t f . e x p ( l o g i t s ) t f . r e d u c e _ s u m ( t f . e x p ( l o g i t s ) , a x i s ) softmax = \frac{tf.exp(logits)}{ tf.reduce\_sum(tf.exp(logits), axis)} softmax=tf.reduce_sum(tf.exp(logits),axis)tf.exp(logits)?
a = tf.linspace(-2., 2., 5)
tf.nn.softmax(a)
# Out[13]:
#
logits = tf.random.uniform([1, 10], minval = -2, maxval = 2)
# Out[15]:
# prob = tf.nn.softmax(logits, axis = 1)tf.reduce_sum(prob, axis = 1)
# Out[17]:
3、tf.tanh函数 把值压缩到 -1~1 之间
文章图片
tf.math.tanh
(
x,
name=None
)
示例:
a
# Out[18]: tf.tanh(a)
# Out[19]:
#