tensorflow2.1中独热编码函数tf.one_hot()的用法

tf.one_hot() 函数是将input转化为one-hot类型数据输出

如果我们有一个5类分类问题,我们有数据 ( X i , Y i ) (X_i,Y_i) (Xi,Yi),其中类别 Y i Y_i Yi有5种取值(因为是5分类问题),所以如果 Y j Y_j Yj为第1类那么其独热编码为: [ 1 , 0 , 0 , 0 , 0 ] [1,0,0,0,0] [1,0,0,0,0],如果是第2类那么独热编码为: [ 0 , 1 , 0 , 0 , 0 ] [0,1,0,0,0] [0,1,0,0,0],也就是说只对存在有该类别数的位置上进行标记为1,其他皆为0。

其定义如下:

one_hot
(
    indices,#输入,这里是一维的
    depth,# one hot dimension.
    on_value=None,#output 默认1
    off_value=None,#output 默认0
    axis=None,
    dtype=None,
    name=None
)

参数说明:

indices - 输入的多个数值,通常是一维矩阵形式。

depth - 输出张量的尺寸,indices中元素默认不超过(depth-1),如果超过,输出为[0,0,···,0]

on_value - 定义在 indices[j] = i 时填充输出的值的标量.(默认:1)

off_value - 定义在 indices[j] != i 时填充输出的值的标量.(默认:0)

axis - 要填充的轴(默认:-1,一个新的最内层轴).

dtype - 输出张量的数据类型.

import tensorflow as tf

var0 = tf.one_hot(indices=[1, 2, 3], depth=3, axis=0)
var1 = tf.one_hot(indices=[1, 2, 3], depth=4, axis=0)
var2 = tf.one_hot(indices=[1, 2, 3], depth=4, axis=1)
# axis=1 按行排
var3 = tf.one_hot(indices=[1, 2, 3], depth=4, axis=-1)

print("var0(axis=0 depth=3):\n",var0)
print("var1(axis=0 depth=4P):\n",var1)
print("var2(axis=1):\n",var2)
print("var3(axis=-1):\n",var3)
# var0(axis=0 depth=3):
#  tf.Tensor(
# [[0. 0. 0.]
#  [1. 0. 0.]
#  [0. 1. 0.]], shape=(3, 3), dtype=float32)
# var1(axis=0 depth=4P):
#  tf.Tensor(
# [[0. 0. 0.]
#  [1. 0. 0.]
#  [0. 1. 0.]
#  [0. 0. 1.]], shape=(4, 3), dtype=float32)
# var2(axis=1):
#  tf.Tensor(
# [[0. 1. 0. 0.]
#  [0. 0. 1. 0.]
#  [0. 0. 0. 1.]], shape=(3, 4), dtype=float32)
# var3(axis=-1):
#  tf.Tensor(
# [[0. 1. 0. 0.]
#  [0. 0. 1. 0.]
#  [0. 0. 0. 1.]], shape=(3, 4), dtype=float32)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值