TF自定义操作对GPU张量输入工作良好,int输入fai

2024-09-28 05:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我为在GPU上运行的TF(使用c++和cuda内核)编写了一个定制的OP。toy identity OP运行良好,它依赖于tf::Tensor输入和输出,然后简单地将元素从输入张量复制到输出张量。你知道吗

但是,当我试图传递int输入(一个int数字)时,我得到了一个分段错误。在REGISTER_OP声明中,我使用

`.Input( "image_size: int32"   )`

然后在void Compute(OpKernelContext* context) override {中,我尝试阅读这个int参数,首先作为tf::Tensor,然后转换成int。你知道吗

const Tensor& inn_image_size_T = context->input(0);
auto inn_image_size_Tflat = inn_image_size_T.flat<int>();
int  inn_image_size = inn_image_size_Tflat(0);

这符合我在网上找到的示例,例如this one(相关行:46、70)。你知道吗

Op已经过检查,并且在GPU上正常运行,没有最后一行(int inn_image_size = inn_image_size_Tflat(0);),对于张量参数,输入确实被复制到输出。你知道吗

但是对于int参数,当我试图从int张量转换为int张量时,会编译一些东西,但当我运行时,会出现分段错误。你知道吗

有什么线索说明为什么会这样吗?你知道吗

=====================================================================

=============================================更新:

=====================================================================

我还为健全性检查打印inn_image_size_T.NumElements()inn_image_size_T.size(),结果是1,因为我只传递一个数字。因此,信息似乎在那里,但阅读它是出人意料的问题。你知道吗


Tags: image参数sizegputf错误context数字

热门问题