【发布时间】:2017-10-12 06:54:02
【问题描述】:
我需要一个类似于 tf.one_hot 给我的张量,但我(有时)每行需要一个以上的 1。
更具体地说,给定一个二维张量 A,当且仅当 A 在同一行中包含列索引作为值时,我需要一个在特定位置具有 1 的二维张量。
更糟糕的是,我给定的张量 A 是动态大小和填充的,但额外的一维张量为我提供了实际长度。
什么是有效的(内存和时间)方法?
这个问题的一些背景: 我正在为每个示例使用标签的可变子集进行多类分类。 因此,我计算了 softmax 的指数,并希望从不相关的类标签中减去一个大数字。
例如,给定输入:
indices = [[1, 4, 2, 5], [0, 4, 2, 0], [2, 4, 0, 0]]
real_length = [4, 3, 2]
shape = [3, 5]
indices 是我的填充二维张量(末尾有 0 个填充),其中每个值表示在输出张量中应该将哪个值设置为 1。
real_length 表示indices 的每一行中有多少个值(从左至右)是非填充值。
shape 是我需要的输出张量的形状,其中第一个维度与indices 相同,第二个维度是indices 中的任何值可能取的最大值,但不一定是indices 的最大值.
我需要:
[[0, 1, 1, 0, 1, 1], [1, 0, 1, 0, 1, 0], [0, 0, 1, 0, 1, 0]]
【问题讨论】:
-
能否请您提供投反对票的理由?
标签: python tensorflow