NNPR_ENSURE_STATUS(nnfw_create_session(&session));
NNPR_ENSURE_STATUS(nnfw_load_model_from_file(session, nnpackage_path.c_str()));
- uint64_t prepare_ms = NowMicros();
- NNPR_ENSURE_STATUS(nnfw_prepare(session));
- prepare_ms = NowMicros() - prepare_ms;
-
- // Set input (with random values)
uint32_t num_inputs;
NNPR_ENSURE_STATUS(nnfw_input_size(session, &num_inputs));
- std::vector<std::vector<float>> inputs(num_inputs);
+ // verify input and output
if (num_inputs == 0)
{
exit(1);
}
+ auto verifyInputTypes = [session]() {
+ uint32_t sz;
+ NNPR_ENSURE_STATUS(nnfw_input_size(session, &sz));
+ for (uint32_t i = 0; i < sz; ++i)
+ {
+ nnfw_tensorinfo ti;
+ NNPR_ENSURE_STATUS(nnfw_input_tensorinfo(session, i, &ti));
+ if (ti.dtype != NNFW_TYPE_TENSOR_FLOAT32)
+ {
+ std::cerr << "Only float 32bit is supported." << std::endl;
+ exit(-1);
+ }
+ }
+ };
+
+ auto verifyOutputTypes = [session]() {
+ uint32_t sz;
+ NNPR_ENSURE_STATUS(nnfw_output_size(session, &sz));
+
+ for (uint32_t i = 0; i < sz; ++i)
+ {
+ nnfw_tensorinfo ti;
+ NNPR_ENSURE_STATUS(nnfw_output_tensorinfo(session, i, &ti));
+ if (ti.dtype != NNFW_TYPE_TENSOR_FLOAT32)
+ {
+ std::cerr << "Only float 32bit is supported." << std::endl;
+ exit(-1);
+ }
+ }
+ };
+
+ verifyInputTypes();
+ verifyOutputTypes();
+
+ // prepare execution
+
+ uint64_t prepare_ms = NowMicros();
+ NNPR_ENSURE_STATUS(nnfw_prepare(session));
+ prepare_ms = NowMicros() - prepare_ms;
+
+ // Set input (with random values)
+ std::vector<std::vector<float>> inputs(num_inputs);
const int seed = 1; /* TODO Add an option for seed value */
RandomGenerator randgen{seed, 0.0f, 2.0f};
for (uint32_t i = 0; i < num_inputs; ++i)
{
nnfw_tensorinfo ti;
NNPR_ENSURE_STATUS(nnfw_input_tensorinfo(session, i, &ti));
- if (ti.dtype != NNFW_TYPE_TENSOR_FLOAT32)
- {
- std::cerr << "Only float 32bit is supported." << std::endl;
- exit(-1);
- }
auto input_num_elements = num_elems(&ti);
inputs[i] = randomData(randgen, input_num_elements);
NNPR_ENSURE_STATUS(nnfw_set_input(session, i, NNFW_TYPE_TENSOR_FLOAT32, inputs[i].data(),
{
nnfw_tensorinfo ti;
NNPR_ENSURE_STATUS(nnfw_output_tensorinfo(session, i, &ti));
- if (ti.dtype != NNFW_TYPE_TENSOR_FLOAT32)
- {
- std::cerr << "Only float 32bit is supported." << std::endl;
- exit(-1);
- }
auto output_num_elements = num_elems(&ti);
outputs[i].resize(output_num_elements);
NNPR_ENSURE_STATUS(nnfw_set_output(session, i, NNFW_TYPE_TENSOR_FLOAT32, outputs[i].data(),