mlpack:FFN<> 中的索引超出范围
mlpack : index out of bounds in FFN<>
我有这个代码:
#include<mlpack/core.hpp>
#include<mlpack/methods/ann/ffn.hpp>
#include<mlpack/methods/ann/layer/linear.hpp>
int main(int argc, char** argv){
assert(argc==3);
arma::mat data_in, data_out;
mlpack::data::Load(argv[1], data_in);
mlpack::data::Load(argv[2], data_out);
std::cout<<"creating model"<<std::endl;
mlpack::ann::FFN<> model;
model.Add<mlpack::ann::Linear<>>(data_in.n_rows, 10);
model.Add<mlpack::ann::SigmoidLayer<>>();
model.Add<mlpack::ann::Linear<>>(10, data_out.n_rows);
model.Add<mlpack::ann::SigmoidLayer<>>();
std::cout<<"training started"<<std::endl;
model.Train(data_in, data_out);
}
当我尝试 运行 时,我总是得到索引越界错误:
creating model
training started
error: Mat::operator(): index out of bounds
terminate called after throwing an instance of 'std::logic_error'
what(): Mat::operator(): index out of bounds
Aborted (core dumped)
我还查看了 ann::FFN<> 上的 mlpack 教程,当我尝试 运行 该代码时,它完全可以正常工作!我在这里使用的数据集是 10000 行和 5 列的数据集,当在这里使用时,它被转换为 5 行和 10000 列,因为 mlpack 将一列视为一个点。数据集中的每个数字都是 0 到 1 之间的值,并且是随机生成的。输入和输出数据集都具有相同的维度。文档也没有那么有用。
确保您的训练标签范围为 [1,#类]。
我有这个代码:
#include<mlpack/core.hpp>
#include<mlpack/methods/ann/ffn.hpp>
#include<mlpack/methods/ann/layer/linear.hpp>
int main(int argc, char** argv){
assert(argc==3);
arma::mat data_in, data_out;
mlpack::data::Load(argv[1], data_in);
mlpack::data::Load(argv[2], data_out);
std::cout<<"creating model"<<std::endl;
mlpack::ann::FFN<> model;
model.Add<mlpack::ann::Linear<>>(data_in.n_rows, 10);
model.Add<mlpack::ann::SigmoidLayer<>>();
model.Add<mlpack::ann::Linear<>>(10, data_out.n_rows);
model.Add<mlpack::ann::SigmoidLayer<>>();
std::cout<<"training started"<<std::endl;
model.Train(data_in, data_out);
}
当我尝试 运行 时,我总是得到索引越界错误:
creating model
training started
error: Mat::operator(): index out of bounds
terminate called after throwing an instance of 'std::logic_error'
what(): Mat::operator(): index out of bounds
Aborted (core dumped)
我还查看了 ann::FFN<> 上的 mlpack 教程,当我尝试 运行 该代码时,它完全可以正常工作!我在这里使用的数据集是 10000 行和 5 列的数据集,当在这里使用时,它被转换为 5 行和 10000 列,因为 mlpack 将一列视为一个点。数据集中的每个数字都是 0 到 1 之间的值,并且是随机生成的。输入和输出数据集都具有相同的维度。文档也没有那么有用。
确保您的训练标签范围为 [1,#类]。