57 {
58 using namespace Eigen;
59 if (in.size() == 0) {
60 throw NNEvaluationException("Empty input map");
61 }
62 size_t n_cols = in.begin()->second.size();
63 MatrixXd inmat(
m_names.size(), n_cols);
64 size_t in_num = 0;
65 for (
const auto& in_name:
m_names) {
66 if (!in.count(in_name)) {
67 throw NNEvaluationException("can't find input: " + in_name);
68 }
69 const auto& invec = in.at(in_name);
70 if (invec.size() != n_cols) {
71 throw NNEvaluationException("Input vector size mismatch");
72 }
73 inmat.row(in_num) = Map<const VectorXd>(invec.data(), invec.size());
74 in_num++;
75 }
76 if (n_cols == 0) {
77 return MatrixXd(
m_names.size(), 0);
78 }
80 }