将一张图像从批处理传递到 C++ 中的函数
passing one image from batch to function in c++
我正在尝试将此存储库中的代码从 2D 更改为 3D; https://github.com/sadeepj/crfasrnn_keras
但是,我的 C++ 非常生锈,我很难解决一个问题。
我正在尝试将 Tensor& 传递给此函数;
void ModifiedPermutohedral::compute(Tensor& out, const Tensor& in, int value_size, bool reverse, bool add) const
用这条线
ModifiedPermutohedral mp;
const Tensor& input_tensor = context->input(0);
Tensor* output_tensor = NULL;
OP_REQUIRES_OK(context, context->allocate_output(0, input_tensor.shape(), &output_tensor));
mp.compute(output_tensor->SubSlice(b), input_tensor.SubSlice(b), channels, backwards_);
其中 b 是我要传递给此计算函数的批处理索引。但是,它给了我一个错误
error: cannot bind non-const lvalue reference of type ‘tensorflow::Tensor&’ to an rvalue of type ‘tensorflow::Tensor’
我相信这是因为 output_tensor 是一个指针,但我应该如何传递它呢? SubSlice 函数 return 不应该是张量吗?我试过了
&(output_tensor->SubSlice(b))
*(output_tensor->SubSlice(b))
也是,但都会产生不同的错误。任何人都可以提供有关我应该如何通过这个的见解吗?谢谢!
虽然我不熟悉tensorflow C++,但我注意到在mp.compute(output_tensor->SubSlice(b), input_tensor.SubSlice(b), channels, backwards_);
中,第一个参数是一个右值,不能用于赋值目的。我建议:
auto sliced_putput = output_tensor->SubSlice(b);
mp.compute(sliced_output, input_tensor.SubSlice(b), channels, backwards_);
//Assign sliced output to the output_tensor's appropriate dimensiton
我正在尝试将此存储库中的代码从 2D 更改为 3D; https://github.com/sadeepj/crfasrnn_keras
但是,我的 C++ 非常生锈,我很难解决一个问题。 我正在尝试将 Tensor& 传递给此函数;
void ModifiedPermutohedral::compute(Tensor& out, const Tensor& in, int value_size, bool reverse, bool add) const
用这条线
ModifiedPermutohedral mp;
const Tensor& input_tensor = context->input(0);
Tensor* output_tensor = NULL;
OP_REQUIRES_OK(context, context->allocate_output(0, input_tensor.shape(), &output_tensor));
mp.compute(output_tensor->SubSlice(b), input_tensor.SubSlice(b), channels, backwards_);
其中 b 是我要传递给此计算函数的批处理索引。但是,它给了我一个错误
error: cannot bind non-const lvalue reference of type ‘tensorflow::Tensor&’ to an rvalue of type ‘tensorflow::Tensor’
我相信这是因为 output_tensor 是一个指针,但我应该如何传递它呢? SubSlice 函数 return 不应该是张量吗?我试过了
&(output_tensor->SubSlice(b))
*(output_tensor->SubSlice(b))
也是,但都会产生不同的错误。任何人都可以提供有关我应该如何通过这个的见解吗?谢谢!
虽然我不熟悉tensorflow C++,但我注意到在mp.compute(output_tensor->SubSlice(b), input_tensor.SubSlice(b), channels, backwards_);
中,第一个参数是一个右值,不能用于赋值目的。我建议:
auto sliced_putput = output_tensor->SubSlice(b);
mp.compute(sliced_output, input_tensor.SubSlice(b), channels, backwards_);
//Assign sliced output to the output_tensor's appropriate dimensiton