笔记 - tensorflow用法:tf.nn.softmax的用法

思考

y_pred = tf.nn.softmax(tf.matmul(x, W) + b) 
"""
softmax函数中输入是什么,输出是什么
"""
  • 要理解输入输出是什么的先决条件:理解softmax的过程

softmax函数本质是一种非线性变化

  • ############## 占坑,下次更新用图说话 ##################
import tensorflow as tf

"""
=> softmax函数的作用是啥?
对每个节点的线性加和作一个非线性变化

具体公式:...

=> 所以需要传递什么数据给softmax函数接口?
需要传递所有所有节点的输出值给softmax函数

这里容易乱的地方是理论中的数据格式是单个样本的特征
单个样本中特征与一个节点的所有连线表示成一组w
有n个节点就有n组w,
"""
"""
理论与实际实践的不同有很大不同...
比如处理的数据格式
"""

X = tf.constant([[1,2,3], [3,2,4]], dtype=tf.float32)
"""
2个样本,每个样本3个特征
"""
W = tf.constant([[1,1],[2,2],[3,3]], dtype=tf.float32)
"""
因为softmax是全连接,所以w个数是 样本特征数 x 节点数
假设节点数为2
则w共有6个
W矩阵的格式:
行数为特征数,列数为节点数
每一列都是表示一组w
"""

bias = tf.constant([1, 2], dtype=tf.float32)
"""
每一组附带一个偏置项
"""
y = tf.nn.softmax(tf.matmul(X, W) + bias)

"""
tf.matmul(X, W) + bias
本身是个矩阵
列表示节点
行表示样本
matrix[i][j]值表示的就是样本i在节点j上的输出值
"""
with tf.Session() as sess:
    print(sess.run(y))

"""
softmax的输出值是什么
"""

总结

  • 理论的算法中不需要考虑太多,因为数据结构或则其他细节都理想化了
  • 所以具体实现时候的设计要考虑很多现实世界的细节
  • 但是理解算法的时候并没有加入这些细节(或则说理论算法的过程与实际开发的过程不完全一致,尤其是加上矩阵的时候
  • 所以真正实现的过程中,需要慢慢打磨语法上的细节
  • 不断区分出理论与实践的不同点,将实现过程与理论过程相统一
  • 目前最深的感触,一切不同的根源在于数据结构
  • 理论中只考虑了单个样本的计算过程,实际编程是m个样本一起计算
  • TODO:继续熟悉tensorflow语法,进一步理解算法思想

猜你喜欢

转载自blog.csdn.net/chen_holy/article/details/90085158