gpt4 book ai didi

c++ - 检查失败 : 1 == NumElements() (1 vs. 1792)在 Tensorflow C++ 中必须有一个元素张量

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

在Python代码中,图像数据赋值给tensor image_batch:

部分代码:

image_data = misc.imread(image_path)

image_batch = graph.get_tensor_by_name("input:0")
phase_train_placeholder = graph.get_tensor_by_name("phase_train:0")
embeddings = graph.get_tensor_by_name("embeddings:0")

feed_dict = {image_batch: np.expand_dims(image_data, 0), phase_train_placeholder: False}
rep = sess.run(embeddings, feed_dict=feed_dict)

C++代码:

const float * source_data = (float*) image.data;
Tensor image_batch(DT_FLOAT, TensorShape({1, 160, 160, 3}));
auto input = image_batch.tensor<float, 4>();
for (int y = 0; y < height; ++y) {
const float* source_row = source_data + (y * width * depth);
for (int x = 0; x < width; ++x) {
const float* source_pixel = source_row + (x * depth);
for (int c = 0; c < depth; ++c) {
const float* source_value = source_pixel + c;
//std::cout << *source_value << std::endl;
input(0, y, x, c) = *source_value;
}
}
}
Tensor phase_train(DT_BOOL, TensorShape());
phase_train.scalar<bool>()() = false;

std::vector<std::pair<string, tensorflow::Tensor>> inputs = {
{ "input:0", image_batch },
{ "phase_train:0", phase_train },
};
std::vector<Tensor> outputs;
Status run_status = session->Run(inputs, {"embeddings:0"}, {}, &outputs);
if (!status.ok()) {
std::cout << status.ToString() << "\n";
return 1;
}

auto output_c = outputs[0].scalar<float>(); //Error here

std::cerr << "SHOW\n";
// Print the results
std::cout << outputs[0].DebugString() << "\n";
std::cout << output_c() << "\n"; // 30

错误:

F tensorflow/core/framework/tensor.cc:493] 检查失败:1 == NumElements()(1 对 1792)必须有一个元素张量

进程结束,退出代码为 6

err是什么原因?

最佳答案

在此之前,我犯了一个愚蠢的错误,没有找到关键的错误代码。

auto output_c = outputs[0].scalar<float>();

替换:

auto output_c = outputs[0].flat<float>();

所有的问题都解决了。

https://github.com/tensorflow/tensorflow/issues/3362 (提示我检查什么代码)

@Aziuth 谢谢。

关于c++ - 检查失败 : 1 == NumElements() (1 vs. 1792)在 Tensorflow C++ 中必须有一个元素张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639413/

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