首页 > 解决方案 > 无法使用 tf.stack 合并二维数组

问题描述

我是 Tensoflow 和 python 的初学者。现在我有两个函数get_lines()generate_rays()打算生成一个张量。我用 numpy 编写这些函数并且效果很好,但是当我将其转移到 Tensorflow 时,即将 Horizo​​n_lines 更改为 Tensor 并将 np.vstack() 更改为 tf.stack(),它会引发错误。

编码:

def get_lines(lines, angle):
    res = tf.round(lines / tf.tan(angle))

    return lines, res

def generate_rays(horizon_lines,
                        angles={0: np.array([1, 2, 3, 4])}):
    temp = [[get_lines(horizon_lines, a)] for a in angles[0]]
    rays_left = tf.stack(temp, axis = 0)

其中horizo​​n_lines是张量。

但它显示:

  File "/home/zchen/PycharmProjects/test/tools/../lib/layer_utils/generate_rays.py", line 64, in generate_rays
    rays_left = tf.stack(pp, axis = 0)
  File "/home/zchen/.conda/envs/py3/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py", line 180, in wrapper
    return target(*args, **kwargs)
  File "/home/zchen/.conda/envs/py3/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py", line 998, in stack
    value_shape = ops.convert_to_tensor(values[0], name=name)._shape_tuple()  # pylint: disable=protected-access
TypeError: 'generator' object is not subscriptable

有谁知道如何解决它?

标签: pythonnumpytensorflow

解决方案


推荐阅读