gpt4 book ai didi

c++ - tensorflow 无效参数 : In[0] is not a matrix

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:09:57 27 4
gpt4 key购买 nike

我是 tensorflow C++ API 的新手,正在努力寻找文档 在线的。这个短代码执行两个 vector 的内积 W 和 x1,编译正常但存在运行时错误, 我复制代码和错误 记录在这里。非常感谢您的帮助

#include "tensorflow/cc/client/client_session.h"
#include "tensorflow/cc/ops/standard_ops.h"
#include "tensorflow/core/framework/tensor.h"

int main() {

using namespace tensorflow;
using namespace tensorflow::ops;

Tensor W (DT_FLOAT,TensorShape({2}));
Tensor x1(DT_FLOAT,TensorShape({2}));

auto W_map = W .tensor<float,1>();
auto x1_map = x1.tensor<float,1>();

for(int i=0;i<L;++i) {
W_map(i) = -1;
x1_map(i) = 1;
}
std::cout<<"W \n"<<W .flat<float>()<<"\n debug "<<W .DebugString()<<std::endl;
std::cout<<"x1 \n"<<x1.flat<float>()<<"\n debug "<<x1.DebugString()<<std::endl;

Scope root = Scope::NewRootScope();
ClientSession session(root);

// either line of code gives similar run time error
// auto v1 = MatMul(root.WithOpName("v1"), W, x1, MatMul::TransposeA(true));
auto v1 = MatMul(root.WithOpName("v1"), W, x1, MatMul::TransposeB(true));

std::vector<Tensor> o1;

TF_CHECK_OK(session.Run({v1}, &o1));
}

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

hweekuans-MacBook-Pro:linear_model hweekuan$ ./linear

W
-1
-1
debug Tensor<type: float shape: [2] values: -1 -1>

x1
1
1
debug Tensor<type: float shape: [2] values: 1 1>

F tensorflow/cc/20170412/linear_model/linear.cc:37] Check failed: ::tensorflow::Status::OK() == (session.Run({v1}, &o1)) (OK vs. Invalid argument: In[0] is not a matrix
[[Node: v1 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=true, _device="/job:localhost/replica:0/task:0/cpu:0"](Const/Const, Const_1/Const)]])
Abort trap: 6

最佳答案

错误消息给出了问题的线索:Wx1 都不是二维矩阵——事实上,它们都是一维 vector ——并且tensorflow::ops::MatMul() op 要求它的两个参数至少是二维的。它不会自动将 vector 转换为其矩阵表示,您必须手动执行此操作。

要解决此问题,请在构造WTensorShape({2, 1}) 时指定TensorShape({1, 2}) > 当你构造 x1 时。对于这些形状,您不应设置 MatMul::TransposeA(false)MatMul::TransposeB(false),或者您可以省略这些选项,因为它们是默认值.

关于c++ - tensorflow 无效参数 : In[0] is not a matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43413232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com