dlib致命误差与output_tensor
dlib fatal error with output_tensor
我目前正在使用RCNN算法处理面部检测应用程序。 dlib-129.2 C 中开发的代码。我的操作系统是 Windows 10 Home Edition 。框架为 QT 5.7 。
我的781张图像(高度:228和宽度:307)在一个名为"图像"
的向量内部std::vector<matrix<rgb_pixel>> images;
之后,我将"图像"分为两个向量:一个包含训练图像(总计389)和测试图像(总计391):
std::vector<dlib::matrix<dlib::rgb_pixel>> training_images(images.begin(), images.begin() + half_size);
std::vector<dlib::matrix<dlib::rgb_pixel>> testing_images(images.begin() + half_size, images.end());
然后,我尝试使用Train()函数来训练RCNN网络:
template <long num_filters, typename SUBNET> using con5d = con<num_filters,5,5,2,2,SUBNET>;
template <long num_filters, typename SUBNET> using con3 = con<num_filters,3,3,1,1,SUBNET>;
template <typename SUBNET> using downsampler = relu<bn_con<con5d<32, relu<bn_con<con5d<32, relu<bn_con<con5d<32,SUBNET>>>>>>>>>;
template <typename SUBNET> using rcon3 = relu<bn_con<con3<32,SUBNET>>>;
using net_type = loss_binary_log<con<1,6,6,1,1,rcon3<rcon3<rcon3<downsampler<input_rgb_image_pyramid<pyramid_down<6>>>>>>>>;
net_type net;
dnn_trainer<net_type> trainer(net);
trainer.set_learning_rate(0.01);
trainer.set_min_learning_rate(0.00001);
trainer.set_mini_batch_size(5);
trainer.be_verbose();
trainer.train(training_images, training_labels);
但是,这行不通。每次运行代码时,都会出现以下错误:
在第179行中检测到的错误 ../../../desktop/dlib-19.2/dlib/dnn/loss.h。函数中检测到的错误 double dlib :: lose_binary_log _ :: compute_loss_value_and_gradient(const) dlib :: tensor&amp; const_label_iterator,subnet&amp;)const [ const_label_iterator = __gnu_cxx :: __ normal_iterator>;子网= dlib :: dimpl :: subnet_wrapper,dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: add_layer, dlib :: input_rgb_image_pyramid>,void>,void>, void>,void>,void>,void>,void>,void>,void>,void>,void>,void>,void>,void>,void>, void>,void>,void>,void>,void>,void>,void>,void>,true,void>]。
失败表达式为output_tensor.nr()== 1&amp;&amp;output_tensor.nc() == 1&amp;&amp;output_tensor.k()==1。
我真的不知道发生了什么。你能帮我吗?
非常感谢您的所有答案。
错误告诉您,您选择的loss_binary_log损失需要网络中的输出张量,每个示例中只有一个值。但是您定义的网络并不能做到这一点。将完全连接的图层放在其末端或执行类似的操作,以便在末尾获得一个输出。
- ( [ ]( ){ output;}); 是什么意思?
- 从 std::向量值创建张量<Tensor>
- diff: output.txt: 没有这样的文件或目录
- 如何使用 Eigen::Tensor::convolve with Multiple Kernel?
- 从生成文件编译错误:"Unable to open output file" ..."No such file or directory"
- 无法在 Windows 10/Visual C++ 2017 上使用 tensorflow C++ API tensor
- 从 Eigen::Tensor 创建张量流::张量
- 'Cannot output file filename.exe Permission denied' C++ 代码::块中的错误
- 如何将 Eigen::Tensor 广播到更高维度?
- 将 Eigen::TensorMap 转换为 Eigen::Tensor
- 如何修复"(Song Title) is not recognized in output screen"
- C++ library output
- 我需要用c ++ 98重写c ++ 11代码,c ++ 11正在使用lambda函数[&](const Output & o
- eigen :: Tensor,如何从张量访问矩阵
- tensorflow::Tensor to python Tensor or numpy.nd_array
- gradle see output for model.components.binaries.all
- 我在下面的代码上收到错误"Output Limit Exceeded"
- Output UTF-8 (u8) std::string
- 在 Eclipse.It 中运行C++代码时出错,'Your program cannot output..'
- 为什么我会得到"You must feed a value for placeholder tensor 'output' with dtype int64"?