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

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

如果我们有一个5类分类问题,我们有数据 (Xi,Yi)(X_i,Y_i),其中类别YiY_i有5种取值(因为是5分类问题),所以如果YjY_j为第1类那么其独热编码为: [1,0,0,0,0][1,0,0,0,0],如果是第2类那么独热编码为:[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)
发布了81 篇原创文章 · 获赞 53 · 访问量 9139
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览