TensorFlow的one_hot函数

import tensorflow as tf
tf.one_hot(indices, depth, on_value, off_value, axis)

indices是一个列表,指定张量中独热向量的独热位置,或者说indeces是非负整数表示的标签列表。len(indices)就是分类的类别数。

tf.one_hot返回的张量的阶数为indeces的阶数+1。

 

当indices的某个分量取-1时,即对应的向量没有独热值。

depth是每个独热向量的维度

on_value是独热值

off_value是非独热值

axis指定第几阶为depth维独热向量,默认为-1,即,指定张量的最后一维为独热向量

例如:对于一个2阶张量而言,axis=0时,即,每个列向量是一个独热的depth维向量

axis=1时,即,每个行向量是一个独热的depth维向量。axis=-1,等价于axis=1

import tensorflow as tf

# 得到4个5维独热行向量向量,
#    其中第1个向量的第0个分量是独热1,
#    第2个向量的第2个分量是独热,
#    第3个向量没有独热,因为指定为-1
#    第4个向量的第1个分量为独热
# labels向targets的转变
labels = [0, 2, -1, 1]
# labels是shape=(4,)的张量。则返回的targets是shape=(len(labels), depth)张量。
# 且这种情况下,axis=-1等价于axis=1
targets = tf.one_hot(indices=labels, depth=5, on_value=1.0, off_value=0.0, axis=-1)
with tf.Session() as sess:
    sess.run(targets)
[[ 1.  0.  0.  0.  0.]
 [ 0.  0.  1.  0.  0.]
 [ 0.  0.  0.  0.  0.]
 [ 0.  1.  0.  0.  0.]]

# 得到1个5维独热行向量。
targets = tf.one_hot(indices=3, depth=5, on_value=1.0, off_value=0.0, axis=0)
with tf.Session() as sess:
    sess.run(targets)
[ 0.  0.  0.  1.  0.]

# 得到1个5维独热列向量
targets = tf.one_hot(indices=[3], depth=5, on_value=1.0, off_value=0.0, axis=0)
with tf.Session() as sess:
    sess.run(targets)
[[ 0.]
[ 0.]
[ 0.]
[ 1.]
[ 0.]]

targets = tf.one_hot(indices=[[0,1],[1,0]], depth=3)
with tf.Session() as sess:
    print(sess.run(targets))
[[[ 1.  0.  0.]
  [ 0.  1.  0.]]
 [[ 0.  1.  0.]
  [ 1.  0.  0.]]]

注:indices如果是n阶张量,则返回的one-hot张量则为n+1阶张量

在实际神经网络的设计应用中,给定的labels通常是数字列表,以标识样本属于哪一个分类。类别数则是独热向量的维数。

# 得到分类的独热向量
targets = tf.one_hot(labels, num_classes)
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值