every blog every motto: You can do more than you think.
0. 前言
本文是softmax/relu函数讲解的兄弟篇,主要用数据对经过sigmoid后,产生的结果进行验证,查看经过sigmoid后数据的变化情况
1. 正文
sigmoid公式:
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
import numpy as np
1.1 一维
tensor = tf.constant(np.array([0, 1, 0, 2]), dtype=tf.float32)
print('原始数据:', tensor)
temp = tf.sigmoid(tensor)
print('结果数据:', temp)
结果:
1.2 二维
tensor = tf.constant(np.array([0, 1, 0, 2]).reshape(2, 2), dtype=tf.float32)
print('原始数据:', tensor)
print('----------------------------------')
temp = tf.sigmoid(tensor)
print('结果数据:', temp)
1.3 三维
1.3.1 第一种情况
tensor = tf.constant(np.array([0, 1, 0, 2]).reshape((2, 1,2)), dtype=tf.float32)
print('原始数据:', tensor)
print('----------------------------------')
temp = tf.sigmoid(tensor)
print('结果数据:', temp)
1.3.2 第二种情况
tensor = tf.constant(np.array([0, 1, 0, 2]).reshape((2, 2, 1)), dtype=tf.float32)
print('原始数据:', tensor)
print('----------------------------------')
temp = tf.sigmoid(tensor)
print('结果数据:', temp)
1.4 小结
- 我们发现不论tensor的shape如何变化,最后的结果都是一样,即,结果不因shape变化而变化,更进一步说,直接将tensor中的每个值代码如公式计算即可。
以上,也是为什么sigmoid用于二分类的原因,我们举一例:
经网络后,模型最后输出特征图为(256,256,1),然后再经过激活函数sigmoid,特征图中的每个值都变成了一个概率值,再用这个结果与真值进行交叉熵计算。
另: sigmoid同relu都是对传进去的每个值计算,不受shape影响。
参考文献
[1] https://blog.csdn.net/weixin_39190382/article/details/108803650