小编Sim*_*ace的帖子

Tensorflow 2 收到“警告:tensorflow:x 对 <function> 的最后 x 次调用触发了 tf.function 重新跟踪”。

我正在开发一个项目,使用Keras训练了一系列二元分类器,并使用Tensorflow作为后端引擎。我的输入数据是一系列图像,其中每个二元分类器必须对图像进行预测,稍后我将预测保存在 CSV 文件中。

我遇到的问题是,当我从第一个系列的二元分类器获得预测时,没有任何警告,但是当第五个或第六个二元分类器调用输入数据的预测方法时,收到以下警告:

警告:tensorflow:最近 5 次调用 <function Model.make_predict_function..predict_function at 0x2b280ff5c158> 触发了 tf.function 回溯。跟踪成本很高,并且跟踪次数过多可能是由于 (1) 在循环中重复创建 @tf.function,(2) 传递不同形状的张量,(3) 传递 Python 对象而不是张量。对于 (1),请在循环外部定义 @tf.function。对于(2),@tf.function具有experimental_relax_shapes=True选项,可以放宽参数形状,从而避免不必要的回溯。对于(3),请参阅 https://www.tensorflow.org/tutorials/customization/performance#python_or_tensor_argshttps://www.tensorflow.org/api_docs/python/tf/function了解更多详细信息。

为了回答括号中的每一点,我的答案如下:

  1. 预测方法在 for 循环调用。
  2. 我不传递张量,而是传递灰度图像的NumPy 数组列表,所有这些数组的宽度和高度大小都相同。唯一可以更改的是批量大小,因为列表只能包含 1 个图像或多个图像。
  3. 正如我在第 2 点中所写,我传递了一个 NumPy 数组列表。

我调试了我的程序,发现调用预测方法时总是会出现此警告。总结我编写的代码如下:

import cv2 as cv
import tensorflow as tf
from tensorflow.keras.models import load_model
# Load the models
binary_classifiers = [load_model(path) for path in path2models]
# Get the images
images = [#Load …
Run Code Online (Sandbox Code Playgroud)

python machine-learning deep-learning keras tensorflow

6
推荐指数
1
解决办法
5533
查看次数

为什么在 CUDA 中使用递归时会收到警告?

我必须使用CUDA解决 GPU 上的代码问题,但我总是收到堆栈大小的警告,因为“函数名称”无法静态确定

这是我正在开发的一个学生项目,该项目是使用CUDA 9.0库用C语言编写的,并且在NVIDIA Quadro K5000 gpu上运行。 每个线程必须执行一个函数,并且在这个函数中,同一个函数有两个递归调用,我之所以想使用这两个递归调用,是因为它使代码对我来说干净简单,但是如果有只有一次递归调用,不再存在堆栈大小问题。

这是我每次编译代码时遇到的错误:

在此输入图像描述

CUDA支持递归函数调用,但我不明白为什么当有两个递归调用时会出现问题。

__device__ void bitonicMergeGPU(float *arr, int l, int indexT, int order) 
{
    int k,p;

    if(l > 1)
    {
        p = l/2;

        for(k=indexT;k<indexT+p;k++)
        {
            //Compare the values.
            compareAndExchange(arr,k,k+p,order);
        }

        //THIS IS WHERE I GET THE ERROR

        bitonicMergeGPU(arr,p,indexT,order);
        bitonicMergeGPU(arr,p,indexT+p,order);
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否可以解决递归调用的问题。

recursion cuda

1
推荐指数
1
解决办法
1198
查看次数