gpt4 book ai didi

python - 在 tensorflow 中手动创建 3+ 阶张量

转载 作者:行者123 更新时间:2023-11-28 16:21:08 25 4
gpt4 key购买 nike

我想在运行时创建一个 [ ?, ?, n ] 张量。数据如下:

1) 我正在检查的每个元素都是一个包含 n 个元素的向量(所以 [1,2,...,n])

2) 每个“组”都是未知数量的先前类型的元素(因此基本上是一个矩阵)

3) 我不知道我会收到多少组。

我手动尝试过,像这样:

shape3 = [
[ [ .111,.112,.113 ], [ .121,.122,.123 ], [ .131,.132,.133 ] ],
[ [ .211,.212,.213 ], [ .221,.222,.223 ] ]
]

var_shape3 = tf.Variable(shape3, name="var_shape_3")
with tf.Session() as session:
session.run(init_op)
print var_shape3.eval()
print var_shape3.get_shape()

但我收到错误

Argument must be a dense tensor: [[[0.111, 0.112, 0.113], [0.121, 0.122, 0.123], [0.131, 0.132, 0.133]], [[0.211, 0.212, 0.213], [0.221, 0.222, 0.223]]] - got shape [2], but wanted [2, 3, 3].

请问我做错了什么?

换句话说:我如何将这些数据放入张量中?

谢谢

最佳答案

在 TensorFlow 中你可以有 dynamic dimensions , 由 ? 符号表示。但是这些维度必须在执行期间推断出来,这意味着一旦执行代码就需要用数字表示。

在您的示例中(组中的组和元素数量可变),这将不起作用。例如。将起作用的是:

shape3 = [
[ [ .111,.112,.113 ], [ .121,.122,.123 ], [ .131,.132,.133 ] ],
[ [ .211,.212,.213 ], [ .221,.222,.223 ], [ .000,.000,.000 ] ]
]

您的两个选择是:

  1. 定义组和组中元素的最大数量,并使用填充 来填充缺失的数据点。您还可以使用 bucketing 对大小相似的示例进行分组(更多信息 here)
  2. 更改您的代码/数据结构以处理可变长度序列。这可能需要使用 TensorFlow scan op。请注意,这可能会非常慢,所以我不推荐它,除非确实需要,更多信息 here .

关于python - 在 tensorflow 中手动创建 3+ 阶张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40154129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com