Python Tensorflow 2.0 stack()引发未初始化的张量错误

Python Tensorflow 2.0 stack()引发未初始化的张量错误,python,tensorflow,Python,Tensorflow,我正在编写一个自定义层,需要在其中循环处理批处理维度,然后是图像的rgb维度。我仍在试图理解Tensorflow是如何实现for循环的,我不确定这与我在这里介绍的错误有关 下面是一些伪代码: @tf.function() def _crop_and_resize(self, imgs, boxes, to_size): # prepare kernel_h and kernel_w n_images = tf.shape(imgs)[0]

我正在编写一个自定义层,需要在其中循环处理批处理维度,然后是图像的rgb维度。我仍在试图理解Tensorflow是如何实现for循环的,我不确定这与我在这里介绍的错误有关

下面是一些伪代码:

    @tf.function()
    def _crop_and_resize(self, imgs, boxes, to_size):
        # prepare kernel_h and kernel_w

        n_images = tf.shape(imgs)[0]
        outputs = tf.TensorArray(dtype=tf.float32, size=n_images)
        for i in tf.range(n_images):
            # in the call to _bilinear we enter the inner loop
            output = self._bilinear(
                kernel_h[i],
                kernel_w[i],
                imgs[i])
            outputs.write(i, output)
        return outputs.stack()


    def _bilinear(self, kernel_h, kernel_w, img):
        n_channels = tf.shape(img)[2]
        result_channels = tf.TensorArray(dtype=tf.float32, size=n_channels)
        for i in tf.range(n_channels):
            result_channels.write(i,
                tf.matmul(
                    tf.matmul(kernel_h, tf.tile(img[:, :, i], [1, 1])),
                    kernel_w, transpose_b=True))
        return tf.transpose(result_channels.stack(), perm=[1,2,0])
我得到以下错误:

InvalidArgumentError:尝试堆叠仅包含未初始化张量且具有未完全定义元素的列表。\u形状:[?,?,?] [{{node model_17/att_1/PartitionedCall/TensorArrayV2Stack/TensorListStack}] 函数调用堆栈: 分布函数


我见过许多这样使用
TensorArray
stack
进行单个for循环的例子,但我不确定嵌套的for循环是否导致了问题。

我遇到了类似的问题,并通过此错误响应中的注释解决了它:

基本上,当处于急切模式时,.stack()调用可以方便地工作,但在图形设置中,需要将.stack()调用链接为图形中的节点,例如

outputs=输出。写入(i,输出)

这为我解决了问题