1 基本概念

解释下什么叫做独热编码(one-hot encoding),独热编码一般是在有监督学习中对数据集进行标注时候使用的,指的是在分类问题中,将存在数据类别的那一类用X表示,不存在的用Y表示,这里的X常常是1, Y常常是0。,举个例子: 
        比如我们有一个5类分类问题,我们有数据,其中类别有五种取值(因为是五类分类问题),所以如果为第一类那么其独热编码为: [1,0,0,0,0],如果是第二类那么独热编码为:[0,1,0,0,0],也就是说只对存在有该类别的数的位置上进行标记为1,其他皆为0。这个编码方式经常用于多分类问题,特别是损失函数为交叉熵函数的时候。接下来我们再介绍下TensorFlow中自带的对数据进行独热编码的函数tf.one_hot(),首先先贴出其API手册:

one_hot(indices,depth,on_value=None,off_value=None,axis=None,dtype=None,name=None
)

需要指定indices,和depth,其中depth是编码深度,on_valueoff_value相当于是编码后的开闭值,如同我们刚才描述的X值和Y值,需要和dtype相同类型(指定了dtype的情况下),axis指定编码的轴。这里给个小的实例:

2 一维one-hot实例

import tensorflow as tf
var1 = tf.one_hot(indices=[0,1,2,3],depth=6,axis=0)
var2 = tf.one_hot(indices=[0,1,2,3],depth=6,axis=1)
var3 = tf.one_hot(indices=[0,1,2,3],depth=4,axis=1)
with tf.Session() as sess:sess.run(tf.global_variables_initializer())a,b,c = sess.run([var1,var2,var3])print(a)print(b)print(c)
'''
# depth为编码深度,它的大小取决于你的分类数目,axis是维度的扩展方向,取0按照第一维度扩展为6
[[1. 0. 0. 0.][0. 1. 0. 0.][0. 0. 1. 0.][0. 0. 0. 1.][0. 0. 0. 0.][0. 0. 0. 0.]]
#  取1按照第二维度扩展为6
[[1. 0. 0. 0. 0. 0.][0. 1. 0. 0. 0. 0.][0. 0. 1. 0. 0. 0.][0. 0. 0. 1. 0. 0.]]
#  下面是假定我们要对四个类别进行独热编码,需要在第二个维度进行扩展为4
[[1. 0. 0. 0.][0. 1. 0. 0.][0. 0. 1. 0.][0. 0. 0. 1.]]
'''

3 二维矩阵的独热编码

语义分割的标签一般都是单通道的图片,标签类别都是从0开始编码,比如pasal voc数据集有20个类别,那么在分割数据集中的ground truth中是从0-20的数据,有时候为了计算损失函数我们需要将这个标签转化为独热编码的形式,然后与预测的结果计算损失,下面演示一个四分类的语义分割标签如何做独热编码。

import tensorflow as tfsegmentation_gt = [[0,0,1,1,1,0,0,0,0],[0,0,0,1,0,0,2,2,0],[0,3,0,0,0,0,2,2,0],[0,3,3,0,0,0,2,0,0],[3,3,0,0,2,0,0,0,0],[0,0,0,0,2,2,0,0,0]
]
seg_onehot = tf.one_hot(indices=segmentation_gt,depth=4,axis=2)
with tf.Session() as sess:sess.run(tf.global_variables_initializer())a = sess.run(seg_onehot)# 查看第三个通道的one-hot编码,我们发现在所有为2的位置,值变为1,其它地方的编码值为0print(a[...,2])'''
[[0. 0. 0. 0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0. 1. 1. 0.][0. 0. 0. 0. 0. 0. 1. 1. 0.][0. 0. 0. 0. 0. 0. 1. 0. 0.][0. 0. 0. 0. 1. 0. 0. 0. 0.][0. 0. 0. 0. 1. 1. 0. 0. 0.]]'''

tensorflow one-hot独热编码相关推荐

  1. tensorflow独热编码方法_tf.one_hot()用法 独热编码

    tf.one_hot()进行独热编码 首先肯定需要解释下什么叫做独热编码(one-hot encoding),独热编码一般是在有监督学习中对数据集进行标注时候使用的,指的是在分类问题中,将存在数据类别 ...

  2. numpy 数组 独热编码 one hot

    numpy 数组 独热编码 one hot import numpy as np import tensorflow as tf array1 = np.array([0, 1, 2, 0, 2]) ...

  3. 详解one-hot独热编码

    1. one-hot 独热 独热,是机器学习中初学者经常听到的一个词. 从字面意义看,独表示唯独,一家独大,独占鳌头,独热表示只有1个热,其他都是凉的. 事实也是如此. 我们来看一个独热编码的例子: ...

  4. python之独热编码的实现

    numpy实现 tensorflow实现 独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位 ...

  5. 独热编码python实现_详解深度学习中的独热编码

    很多人开始接触深度学习,数据处理遇到第一个专业英文术语就是one-hot encode(独热编码),很多初学者就会迷茫,这个东西是什么意思,其实说的直白点所谓的独热编码最重要的就是把一组字符串或者数字 ...

  6. 独热编码与交叉熵损失函数

    文章 一.独热编码数据训练的示例代码 1.导入第三方库 2.加载fashion_mnist数据集 3.数据处理 4.搭建模型 5.训练模型 6.模型预测 在文章 softmax多分类中的简单示例中我们 ...

  7. 数据预处理之独热编码(One-Hot)

    1.前言 在机器学习算法中,我们经常会遇到分类特征,例如:人的性别有男女,祖国有中国,美国,法国等. 这些特征值并不是连续的,而是离散的,无序的.通常我们需要对其进行特征数字化. 那什么是特征数字化呢 ...

  8. R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型、比较加入叶子索引特征的模型的分类性能提升

    R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型.比较加入叶子索引特征的模型的分类性能提升 目录

  9. R语言构建xgboost模型:使用xgboost模型训练tweedie回归模型,特征工程(dataframe转化到data.table、独热编码、缺失值删除、DMatrix结构生成)

    R语言构建xgboost模型:使用xgboost模型训练tweedie回归模型,特征工程(dataframe转化到data.table.独热编码.缺失值删除.DMatrix结构生成) 目录

最新文章

  1. SVD分解的并行实现
  2. linux系统中条码如何识别的,如何(可靠地)在嵌入式(无头)Linux中读取USB条形码扫描仪?...
  3. 用react-service做状态管理,适用于react、react native
  4. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法
  5. IntelliJ IDEA中怎么创建xml文件?
  6. HDU2019 数列有序!
  7. 微软 Chromium Edge 禁用 Google?
  8. C#基础笔记(第十天)
  9. vue 局部回到顶部_vue中回到顶部
  10. android--关于apk加密那点事的思考
  11. Win10怎样禁用触控板
  12. pve 不订阅更新_魔兽世界PVE史:第二章 (四)国服那些年
  13. Win7-VirsualBox下学习Ubuntu--Ubuntu和Win7共享文件夹
  14. 【转】《与MySQL的零距离接触》第四章:操作数据表中的记录 (4-2:MySQL 插入记录INSERT)
  15. centOS域名访问问题,/etc/hosts详解
  16. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering论文解读( and code)
  17. Excel文本处理函数
  18. 计算机cpu频率时钟周期,关于cpu:什么是时钟周期和时钟速度?
  19. H5上传图片并使用canvas制作海报
  20. 面试经历:阿里P8面经

热门文章

  1. GPRS连接阿里云物联网平台二
  2. HI3559V200获取IMX458摄像头数据_(2)sdk例程sample_vio
  3. PyCharm - 码云(Gitee)
  4. 解决使用JdbcTemplate查询数据产生的异常:EmptyResultDataAccessException: Incorrect result size: expected 1, actual
  5. Ping 请求找不到主机 eeee.dev5.bbbbbbb/eeeeeee/。请检查该名称,然后重试。
  6. iOS5.1.1完美越狱教程
  7. hbw-utils - UUIDUtils
  8. 中科院计算所培训中心开启课程研发新征程
  9. CXF之七 传输文件
  10. 【基于Web停车场管理系统——开题报告 分享(仅供参考呀)】