问题标签 [ragged-tensors]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
86 浏览

python - tensorflow map_fn 出错。无法指定输出签名

我正在尝试使用 tensorflow 的tf.map_fn来映射一个参差不齐的张量,但我遇到了一个我无法修复的错误。这是一些演示错误的最小代码:

我想要的输出是:

我得到的错误是:

“InvalidArgumentError:所有 flat_values 必须具有兼容的形状。索引 0 处的形状:[3]。索引 1 处的形状:[2]。如果您使用的是 tf.map_fn,那么您可能需要使用适当的 ragged_rank 指定显式 fn_output_signature,并且/ 或将输出张量转换为 RaggedTensors。[Op:RaggedTensorFromVariant]"

我意识到我需要指定 fn_output_signature 但尽管进行了实验,但我无法弄清楚它应该是什么。

编辑:我稍微清理了 AloneTogether 的优秀答案,并创建了一个映射参差不齐的张量的函数。他的回答使用tf.ragged.stack函数将张量转换为不规则的张量,这tf.map_fn出于某种原因需要

0 投票
1 回答
61 浏览

python - 将线性代数应用于张量流中的参差不齐的张量

我正在使用 tensorflow v2.7.0 并尝试使用不规则张量创建 ML 模型。

问题是 tf.linalg.diag、tf.matmul 和 tf.linalg.det 不适用于不规则张量。我通过在 numpy 中转换参差不齐的张量并将其转换回参差不齐的张量找到了一种解决方法,但是在全局模型中应用图层时它不起作用。

以下代码正在运行

但是一旦我在更全局的模型中使用了这一层,我就会遇到以下错误

OperatorNotAllowedInGraphError:调用层“lr_det_10”(类型 LRDet)时遇到异常。

我尝试使用 tf.map_fn 而不是 .numpy() 的列表理解,但没有成功。

任何帮助将不胜感激。

0 投票
2 回答
70 浏览

python - tensorflow数组中如何按batch进行切片?

我有一个数组output和一个 id subject_ids

ID中的数字分别代表开始和结束位置,然后我想根据开始和结束位置得到它们之间的向量。

例如,在这种情况下,我应该得到and [[1, 2, 3], [4, 5, 6]][[4, 5, 6], [7, 8, 9]][[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我应该怎么办?我试过tf.sliceand tf.gather,但似乎没有用。

0 投票
1 回答
63 浏览

python - 尝试堆叠两个参差不齐的张量时出错

尝试使用tf.ragged.stack. 我正在尝试堆叠两个张量 t1、t2,但是它们具有不同的等级。t2 比 t1 少 1 个等级。因此,我曾经tf.expand_dims增加 t2 的排名,以便排名匹配。但是,当我将它们堆叠起来时,会出现错误:

我得到的错误是

InvalidArgumentError:ConcatOp:输入的尺寸应匹配:shape[0] = [20,10] 与 shape[1] = [11,1] [Op:ConcatV2] 名称:concat

但是,当我从头开始创建等效张量时,我没有收到错误。

t2 和 t2 new 的区别在于 tensorflow 认为它们的形状不同,即使它们实际上代表的是同一个张量

0 投票
1 回答
60 浏览

python - IndexError:维度超出范围(预计在 [-2, 1] 范围内,但得到 3)

我用下面的行创建了一个随机函数

并使用了此处所示的转置功能

我得到了下面的错误行。谁可以提供解决方案


0 投票
1 回答
52 浏览

python - 来自不规则张量的样本

我有一个从 1 到 10k 的 row_lens 的 raggedTensor。我想以可扩展的方式从中随机选择元素,每行的数量有上限。就像在这个例子中一样:

-> 输出:[[1,2,3],[4,5],[6],[7,9,11]]

我的想法是在 len_row < limit 的情况下选择 * ,在另一种情况下随机选择。我想知道这是否可以通过一些 tensorflow 操作以低于 batch_size 的复杂度来完成?