【问题标题】:Tensorflow : one hot encodingTensorflow:一种热编码
【发布时间】:2016-03-19 10:33:40
【问题描述】:

以下代码可以正常工作,但使用 eval() 我认为效率低下。有没有更好的方法来达到同样的效果?

import tensorflow as tf
import numpy as np
sess = tf.Session()
t = tf.constant([[4,5.1,6.3,5,6.5,7.2,9.3,7,1,1.4],[4,5.1,9.3,5,6.5,7.2,1.3,7,1,1.4],[4,3.1,6.3,5,6.5,3.2,5.3,7,1,1.4]])
print t
a = tf.argmax(t,1).eval(session=sess)
z = [ k==np.arange(14) for k in a]
z1 = tf.convert_to_tensor(np.asarray(z).astype('int32'))
print z1
print sess.run(z1)

输出

Tensor("Const_25:0", shape=TensorShape([Dimension(3), Dimension(10)]), dtype=float32)
Tensor("Const_26:0", shape=TensorShape([Dimension(3), Dimension(14)]), dtype=int32)
[[0 0 0 0 0 0 1 0 0 0 0 0 0 0]
 [0 0 1 0 0 0 0 0 0 0 0 0 0 0]
 [0 0 0 0 0 0 0 1 0 0 0 0 0 0]]

【问题讨论】:

    标签: eval tensorflow one-hot-encoding


    【解决方案1】:

    实现它的一种方法是计算每一行的最大值,然后将每个元素与该值进行比较。我没有在这台机器上安装张量流,所以不能为你提供确切的代码,但它会是这样的:

    z1 = tf.equal(t, tf.reduce_max(t, reduction_indices=[1], keep_dims=True))
    

    【讨论】:

    • 非常感谢。现在已经连续 3 天这样做了,我写的最新的混乱代码因为 eval 没有工作,在编译那一步时吃掉了我的整个 16Gig,当我杀死时仍然很饿:(
    • 如果您的数据太大而无法放入内存,您还可以查看 Scikit Flow 中的核心训练示例。
    猜你喜欢
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 2018-10-25
    • 2019-02-06
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多