tf.one_hot

什么是onehot:一位有效编码,对每一个样本,如果有n种类别,只有对应类别位置编码为1,其它为0 。ce 损失计算常常用到。
tensorflow 函数
tf.one_hot(
indices,
depth,
on_value=None,
off_value=None,
axis=None,
dtype=None,
name=None
)
indices:样本类别集合
depth:类别数
on_value: 最大值,如果未指定,默认为1
off_value: 最小值,如果未指定,默认为0
on_value和off_value常常和label smoothing 结合
什么是label_smoothing
一种正则方法,防止过拟合传统one-hot编码标签的网络学习过程中,鼓励模型预测为目标类别的概率趋近1,非目标类别的概率趋近0,即最终预测的logits向量(logits向量经过softmax后输出的就是预测的所有类别的概率分布)中目标类别z的值会趋于无穷大,使得模型向预测正确与错误标签的logit差值无限增大的方向学习,而过大的logit差值会使模型缺乏适应性,对它的预测过于自信.

上代码

import tensorflow as tf
classes = 5
labels = tf.constant([0,1,2])
output = tf.one_hot(labels,classes)

label_smoothing = 0.1
p = 1.0 - label_smoothing
q = label_smoothing / (classes - 1)
output1 = tf.one_hot(labels,classes,on_value=p,off_value=q)

sess = tf.Session()
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    output = sess.run(output)
    output1 = sess.run(output1)
    print("output of one-hot is : \n",output)
    print("output of one-hot with label_smoothing is : \n",output1)

tf.one_hot
举个例子:
第一个one-hot: 有五种类别:红橙黄绿蓝。第一个样本是红的,第二个样本是橙色,第三个是黄色。
第二个one-hot: 在第一种基础上,”劫富济贫”,对应类别的概率不设置为1,而是设置成1-label_smoothing,也即0.9. 剩下的部分不设置成0,而是均分label_smoothing,也即0.1/4=0.025

Original: https://blog.csdn.net/weixin_39780859/article/details/123043760
Author: 瑶光light
Title: tf.one_hot

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/511164/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球