ONE - On-device Neural Engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
onert::api::python Namespace Reference

Data Structures

class  NNFW_SESSION
 
struct  tensorinfo
 tensor info describes the type and shape of tensors More...
 

Functions

void ensure_status (NNFW_STATUS status)
 Handle errors with NNFW_STATUS in API functions.
 
NNFW_LAYOUT getLayout (const char *layout="")
 
NNFW_TYPE getType (const char *type="")
 
const char * getStringType (NNFW_TYPE type)
 
uint64_t num_elems (const nnfw_tensorinfo *tensor_info)
 Get the total number of elements in nnfw_tensorinfo->dims.
 
py::list get_dims (const tensorinfo &tensor_info)
 Get nnfw_tensorinfo->dims.
 
void set_dims (tensorinfo &tensor_info, const py::list &array)
 Set nnfw_tensorinfo->dims.
 
void bind_nnfw_session (pybind11::module_ &m)
 
void bind_experimental_nnfw_session (pybind11::module_ &m)
 
void bind_tensorinfo (pybind11::module_ &m)
 
void bind_nnfw_session (py::module_ &m)
 
void bind_experimental_nnfw_session (py::module_ &m)
 
void bind_tensorinfo (py::module_ &m)
 

Function Documentation

◆ bind_experimental_nnfw_session() [1/2]

void onert::api::python::bind_experimental_nnfw_session ( py::module_ &  m)

Definition at line 225 of file nnfw_session_bindings.cc.

226{
227 // Add experimental APIs for the `NNFW_SESSION` class
228 m.attr("nnfw_session")
229 .cast<py::class_<NNFW_SESSION>>()
230 .def("train_get_traininfo", &NNFW_SESSION::train_get_traininfo,
231 "Retrieve training information for the model.")
232 .def("train_set_traininfo", &NNFW_SESSION::train_set_traininfo, py::arg("info"),
233 "Set training information for the model.")
234 .def("train_prepare", &NNFW_SESSION::train_prepare, "Prepare for training")
235 .def("train", &NNFW_SESSION::train, py::arg("update_weights") = true,
236 "Run a training step, optionally updating weights.")
237 .def("train_get_loss", &NNFW_SESSION::train_get_loss, py::arg("index"),
238 "Retrieve the training loss for a specific index.")
239 .def("train_set_input", &NNFW_SESSION::train_set_input<float>, py::arg("index"),
240 py::arg("buffer"), "Set training input tensor for the given index (float).")
241 .def("train_set_input", &NNFW_SESSION::train_set_input<int>, py::arg("index"),
242 py::arg("buffer"), "Set training input tensor for the given index (int).")
243 .def("train_set_input", &NNFW_SESSION::train_set_input<uint8_t>, py::arg("index"),
244 py::arg("buffer"), "Set training input tensor for the given index (uint8).")
245 .def("train_set_expected", &NNFW_SESSION::train_set_expected<float>, py::arg("index"),
246 py::arg("buffer"), "Set expected output tensor for the given index (float).")
247 .def("train_set_expected", &NNFW_SESSION::train_set_expected<int>, py::arg("index"),
248 py::arg("buffer"), "Set expected output tensor for the given index (int).")
249 .def("train_set_expected", &NNFW_SESSION::train_set_expected<uint8_t>, py::arg("index"),
250 py::arg("buffer"), "Set expected output tensor for the given index (uint8).")
251 .def("train_set_output", &NNFW_SESSION::train_set_output<float>, py::arg("index"),
252 py::arg("buffer"), "Set output tensor for the given index (float).")
253 .def("train_set_output", &NNFW_SESSION::train_set_output<int>, py::arg("index"),
254 py::arg("buffer"), "Set output tensor for the given index (int).")
255 .def("train_set_output", &NNFW_SESSION::train_set_output<uint8_t>, py::arg("index"),
256 py::arg("buffer"), "Set output tensor for the given index (uint8).")
257 .def("train_export_circle", &NNFW_SESSION::train_export_circle, py::arg("path"),
258 "Export the trained model to a circle file.")
259 .def("train_import_checkpoint", &NNFW_SESSION::train_import_checkpoint, py::arg("path"),
260 "Import a training checkpoint from a file.")
261 .def("train_export_checkpoint", &NNFW_SESSION::train_export_checkpoint, py::arg("path"),
262 "Export the training checkpoint to a file.");
263}

References m, onert::api::python::NNFW_SESSION::train(), onert::api::python::NNFW_SESSION::train_export_checkpoint(), onert::api::python::NNFW_SESSION::train_export_circle(), onert::api::python::NNFW_SESSION::train_get_loss(), onert::api::python::NNFW_SESSION::train_get_traininfo(), onert::api::python::NNFW_SESSION::train_import_checkpoint(), onert::api::python::NNFW_SESSION::train_prepare(), and onert::api::python::NNFW_SESSION::train_set_traininfo().

◆ bind_experimental_nnfw_session() [2/2]

void onert::api::python::bind_experimental_nnfw_session ( pybind11::module_ &  m)

Referenced by PYBIND11_MODULE().

◆ bind_nnfw_session() [1/2]

void onert::api::python::bind_nnfw_session ( py::module_ &  m)

Definition at line 27 of file nnfw_session_bindings.cc.

28{
29 py::class_<NNFW_SESSION>(m, "nnfw_session", py::module_local())
30 .def(
31 py::init<const char *, const char *>(), py::arg("package_file_path"), py::arg("backends"),
32 "Create a new session instance, load model from nnpackage file or directory, "
33 "set available backends and prepare session to be ready for inference\n"
34 "Parameters:\n"
35 "\tpackage_file_path (str): Path to the nnpackage file or unzipped directory to be loaded\n"
36 "\tbackends (str): Available backends on which nnfw uses\n"
37 "\t\tMultiple backends can be set and they must be separated by a semicolon "
38 "(ex: \"acl_cl;cpu\")\n"
39 "\t\tAmong the multiple backends, the 1st element is used as the default backend.")
40 .def("set_input_tensorinfo", &NNFW_SESSION::set_input_tensorinfo, py::arg("index"),
41 py::arg("tensor_info"),
42 "Set input model's tensor info for resizing.\n"
43 "Parameters:\n"
44 "\tindex (int): Index of input to be set (0-indexed)\n"
45 "\ttensor_info (tensorinfo): Tensor info to be set")
46 .def("prepare", &NNFW_SESSION::prepare, "Prepare for inference")
47 .def("run", &NNFW_SESSION::run, "Run inference")
48 .def("run_async", &NNFW_SESSION::run_async, "Run inference asynchronously")
49 .def("wait", &NNFW_SESSION::wait, "Wait for asynchronous run to finish")
50 .def(
51 "set_input",
52 [](NNFW_SESSION &session, uint32_t index, py::array_t<float> &buffer) {
53 session.set_input<float>(index, buffer);
54 },
55 py::arg("index"), py::arg("buffer"),
56 "Set input buffer\n"
57 "Parameters:\n"
58 "\tindex (int): Index of input to be set (0-indexed)\n"
59 "\tbuffer (numpy): Raw buffer for input")
60 .def(
61 "set_input",
62 [](NNFW_SESSION &session, uint32_t index, py::array_t<int> &buffer) {
63 session.set_input<int>(index, buffer);
64 },
65 py::arg("index"), py::arg("buffer"),
66 "Set input buffer\n"
67 "Parameters:\n"
68 "\tindex (int): Index of input to be set (0-indexed)\n"
69 "\tbuffer (numpy): Raw buffer for input")
70 .def(
71 "set_input",
72 [](NNFW_SESSION &session, uint32_t index, py::array_t<uint8_t> &buffer) {
73 session.set_input<uint8_t>(index, buffer);
74 },
75 py::arg("index"), py::arg("buffer"),
76 "Set input buffer\n"
77 "Parameters:\n"
78 "\tindex (int): Index of input to be set (0-indexed)\n"
79 "\tbuffer (numpy): Raw buffer for input")
80 .def(
81 "set_input",
82 [](NNFW_SESSION &session, uint32_t index, py::array_t<bool> &buffer) {
83 session.set_input<bool>(index, buffer);
84 },
85 py::arg("index"), py::arg("buffer"),
86 "Set input buffer\n"
87 "Parameters:\n"
88 "\tindex (int): Index of input to be set (0-indexed)\n"
89 "\tbuffer (numpy): Raw buffer for input")
90 .def(
91 "set_input",
92 [](NNFW_SESSION &session, uint32_t index, py::array_t<int64_t> &buffer) {
93 session.set_input<int64_t>(index, buffer);
94 },
95 py::arg("index"), py::arg("buffer"),
96 "Set input buffer\n"
97 "Parameters:\n"
98 "\tindex (int): Index of input to be set (0-indexed)\n"
99 "\tbuffer (numpy): Raw buffer for input")
100 .def(
101 "set_input",
102 [](NNFW_SESSION &session, uint32_t index, py::array_t<int8_t> &buffer) {
103 session.set_input<int8_t>(index, buffer);
104 },
105 py::arg("index"), py::arg("buffer"),
106 "Set input buffer\n"
107 "Parameters:\n"
108 "\tindex (int): Index of input to be set (0-indexed)\n"
109 "\tbuffer (numpy): Raw buffer for input")
110 .def(
111 "set_input",
112 [](NNFW_SESSION &session, uint32_t index, py::array_t<int16_t> &buffer) {
113 session.set_input<int16_t>(index, buffer);
114 },
115 py::arg("index"), py::arg("buffer"),
116 "Set input buffer\n"
117 "Parameters:\n"
118 "\tindex (int): Index of input to be set (0-indexed)\n"
119 "\tbuffer (numpy): Raw buffer for input")
120 .def(
121 "set_output",
122 [](NNFW_SESSION &session, uint32_t index, py::array_t<float> &buffer) {
123 session.set_output<float>(index, buffer);
124 },
125 py::arg("index"), py::arg("buffer"),
126 "Set output buffer\n"
127 "Parameters:\n"
128 "\tindex (int): Index of output to be set (0-indexed)\n"
129 "\tbuffer (numpy): Raw buffer for output")
130 .def(
131 "set_output",
132 [](NNFW_SESSION &session, uint32_t index, py::array_t<int> &buffer) {
133 session.set_output<int>(index, buffer);
134 },
135 py::arg("index"), py::arg("buffer"),
136 "Set output buffer\n"
137 "Parameters:\n"
138 "\tindex (int): Index of output to be set (0-indexed)\n"
139 "\tbuffer (numpy): Raw buffer for output")
140 .def(
141 "set_output",
142 [](NNFW_SESSION &session, uint32_t index, py::array_t<uint8_t> &buffer) {
143 session.set_output<uint8_t>(index, buffer);
144 },
145 py::arg("index"), py::arg("buffer"),
146 "Set output buffer\n"
147 "Parameters:\n"
148 "\tindex (int): Index of output to be set (0-indexed)\n"
149 "\tbuffer (numpy): Raw buffer for output")
150 .def(
151 "set_output",
152 [](NNFW_SESSION &session, uint32_t index, py::array_t<bool> &buffer) {
153 session.set_output<bool>(index, buffer);
154 },
155 py::arg("index"), py::arg("buffer"),
156 "Set output buffer\n"
157 "Parameters:\n"
158 "\tindex (int): Index of output to be set (0-indexed)\n"
159 "\tbuffer (numpy): Raw buffer for output")
160 .def(
161 "set_output",
162 [](NNFW_SESSION &session, uint32_t index, py::array_t<int64_t> &buffer) {
163 session.set_output<int64_t>(index, buffer);
164 },
165 py::arg("index"), py::arg("buffer"),
166 "Set output buffer\n"
167 "Parameters:\n"
168 "\tindex (int): Index of output to be set (0-indexed)\n"
169 "\tbuffer (numpy): Raw buffer for output")
170 .def(
171 "set_output",
172 [](NNFW_SESSION &session, uint32_t index, py::array_t<int8_t> &buffer) {
173 session.set_output<int8_t>(index, buffer);
174 },
175 py::arg("index"), py::arg("buffer"),
176 "Set output buffer\n"
177 "Parameters:\n"
178 "\tindex (int): Index of output to be set (0-indexed)\n"
179 "\tbuffer (numpy): Raw buffer for output")
180 .def(
181 "set_output",
182 [](NNFW_SESSION &session, uint32_t index, py::array_t<int16_t> &buffer) {
183 session.set_output<int16_t>(index, buffer);
184 },
185 py::arg("index"), py::arg("buffer"),
186 "Set output buffer\n"
187 "Parameters:\n"
188 "\tindex (int): Index of output to be set (0-indexed)\n"
189 "\tbuffer (numpy): Raw buffer for output")
190 .def("input_size", &NNFW_SESSION::input_size,
191 "Get the number of inputs defined in loaded model\n"
192 "Returns:\n"
193 "\tint: The number of inputs")
194 .def("output_size", &NNFW_SESSION::output_size,
195 "Get the number of outputs defined in loaded model\n"
196 "Returns:\n"
197 "\tint: The number of outputs")
198 .def("set_input_layout", &NNFW_SESSION::set_input_layout, py::arg("index"),
199 py::arg("layout") = "NONE",
200 "Set the layout of an input\n"
201 "Parameters:\n"
202 "\tindex (int): Index of input to be set (0-indexed)\n"
203 "\tlayout (str): Layout to set to target input")
204 .def("set_output_layout", &NNFW_SESSION::set_output_layout, py::arg("index"),
205 py::arg("layout") = "NONE",
206 "Set the layout of an output\n"
207 "Parameters:\n"
208 "\tindex (int): Index of output to be set (0-indexed)\n"
209 "\tlayout (str): Layout to set to target output")
210 .def("input_tensorinfo", &NNFW_SESSION::input_tensorinfo, py::arg("index"),
211 "Get i-th input tensor info\n"
212 "Parameters:\n"
213 "\tindex (int): Index of input\n"
214 "Returns:\n"
215 "\ttensorinfo: Tensor info (shape, type, etc)")
216 .def("output_tensorinfo", &NNFW_SESSION::output_tensorinfo, py::arg("index"),
217 "Get i-th output tensor info\n"
218 "Parameters:\n"
219 "\tindex (int): Index of output\n"
220 "Returns:\n"
221 "\ttensorinfo: Tensor info (shape, type, etc)");
222}
loco::GraphInputIndex index(const TFPlaceholder *node)
Definition TFNode.cpp:54

References onert::api::python::NNFW_SESSION::input_size(), onert::api::python::NNFW_SESSION::input_tensorinfo(), m, onert::api::python::NNFW_SESSION::output_size(), onert::api::python::NNFW_SESSION::output_tensorinfo(), onert::api::python::NNFW_SESSION::prepare(), onert::api::python::NNFW_SESSION::run(), onert::api::python::NNFW_SESSION::run_async(), onert::api::python::NNFW_SESSION::set_input_layout(), onert::api::python::NNFW_SESSION::set_input_tensorinfo(), onert::api::python::NNFW_SESSION::set_output_layout(), and onert::api::python::NNFW_SESSION::wait().

◆ bind_nnfw_session() [2/2]

void onert::api::python::bind_nnfw_session ( pybind11::module_ &  m)

Referenced by PYBIND11_MODULE().

◆ bind_tensorinfo() [1/2]

void onert::api::python::bind_tensorinfo ( py::module_ &  m)

Definition at line 27 of file nnfw_tensorinfo_bindings.cc.

28{
29 py::class_<tensorinfo>(m, "tensorinfo", "tensorinfo describes the type and shape of tensors",
30 py::module_local())
31 .def(py::init<>(), "The constructor of tensorinfo")
32 .def_readwrite("dtype", &tensorinfo::dtype, "The data type")
33 .def_readwrite("rank", &tensorinfo::rank, "The number of dimensions (rank)")
34 .def_property(
35 "dims", [](const tensorinfo &ti) { return get_dims(ti); },
36 [](tensorinfo &ti, const py::list &dims_list) { set_dims(ti, dims_list); },
37 "The dimension of tensor. Maximum rank is 6 (NNFW_MAX_RANK).");
38}
py::list get_dims(const tensorinfo &tensor_info)
Get nnfw_tensorinfo->dims.
tensor info describes the type and shape of tensors

References onert::api::python::tensorinfo::dtype, get_dims(), m, onert::api::python::tensorinfo::rank, and set_dims().

◆ bind_tensorinfo() [2/2]

void onert::api::python::bind_tensorinfo ( pybind11::module_ &  m)

Referenced by PYBIND11_MODULE().

◆ ensure_status()

void onert::api::python::ensure_status ( NNFW_STATUS  status)

Handle errors with NNFW_STATUS in API functions.

This only handles NNFW_STATUS errors.

Parameters
[in]statusThe status returned by API functions

Definition at line 26 of file nnfw_api_wrapper.cc.

27{
28 switch (status)
29 {
31 break;
33 std::cout << "[ERROR]\tNNFW_STATUS_ERROR\n";
34 exit(1);
36 std::cout << "[ERROR]\tNNFW_STATUS_UNEXPECTED_NULL\n";
37 exit(1);
39 std::cout << "[ERROR]\tNNFW_STATUS_INVALID_STATE\n";
40 exit(1);
42 std::cout << "[ERROR]\tNNFW_STATUS_OUT_OF_MEMORY\n";
43 exit(1);
45 std::cout << "[ERROR]\tNNFW_STATUS_INSUFFICIENT_OUTPUT_SIZE\n";
46 exit(1);
48 std::cout << "[ERROR]\tNNFW_STATUS_DEPRECATED_API\n";
49 exit(1);
50 }
51}
@ NNFW_STATUS_INVALID_STATE
Definition onert-micro.h:97
@ NNFW_STATUS_UNEXPECTED_NULL
Definition onert-micro.h:95
@ NNFW_STATUS_NO_ERROR
Definition onert-micro.h:88
@ NNFW_STATUS_DEPRECATED_API
@ NNFW_STATUS_INSUFFICIENT_OUTPUT_SIZE
@ NNFW_STATUS_ERROR
Definition onert-micro.h:93
@ NNFW_STATUS_OUT_OF_MEMORY
Definition onert-micro.h:99

References NNFW_STATUS_DEPRECATED_API, NNFW_STATUS_ERROR, NNFW_STATUS_INSUFFICIENT_OUTPUT_SIZE, NNFW_STATUS_INVALID_STATE, NNFW_STATUS_NO_ERROR, NNFW_STATUS_OUT_OF_MEMORY, and NNFW_STATUS_UNEXPECTED_NULL.

Referenced by onert::api::python::NNFW_SESSION::close_session(), onert::api::python::NNFW_SESSION::input_size(), onert::api::python::NNFW_SESSION::input_tensorinfo(), onert::api::python::NNFW_SESSION::NNFW_SESSION(), onert::api::python::NNFW_SESSION::output_size(), onert::api::python::NNFW_SESSION::output_tensorinfo(), onert::api::python::NNFW_SESSION::prepare(), onert::api::python::NNFW_SESSION::run(), onert::api::python::NNFW_SESSION::run_async(), onert::api::python::NNFW_SESSION::set_input(), onert::api::python::NNFW_SESSION::set_input_layout(), onert::api::python::NNFW_SESSION::set_input_tensorinfo(), onert::api::python::NNFW_SESSION::set_output(), onert::api::python::NNFW_SESSION::set_output_layout(), onert::api::python::NNFW_SESSION::train(), onert::api::python::NNFW_SESSION::train_export_checkpoint(), onert::api::python::NNFW_SESSION::train_export_circle(), onert::api::python::NNFW_SESSION::train_get_loss(), onert::api::python::NNFW_SESSION::train_get_traininfo(), onert::api::python::NNFW_SESSION::train_import_checkpoint(), onert::api::python::NNFW_SESSION::train_prepare(), onert::api::python::NNFW_SESSION::train_set_expected(), onert::api::python::NNFW_SESSION::train_set_input(), onert::api::python::NNFW_SESSION::train_set_output(), onert::api::python::NNFW_SESSION::train_set_traininfo(), and onert::api::python::NNFW_SESSION::wait().

◆ get_dims()

py::list onert::api::python::get_dims ( const tensorinfo tensor_info)

Get nnfw_tensorinfo->dims.

This function is called to get dimension array of tensorinfo.

Parameters
[in]tensor_infoTensor info (shape, type, etc)
Returns
python list of dims

Definition at line 147 of file nnfw_api_wrapper.cc.

148{
149 py::list dims_list;
150 for (int32_t i = 0; i < tensor_info.rank; ++i)
151 {
152 dims_list.append(tensor_info.dims[i]);
153 }
154 return dims_list;
155}
int32_t dims[NNFW_MAX_RANK]

References onert::api::python::tensorinfo::dims, and onert::api::python::tensorinfo::rank.

Referenced by bind_tensorinfo().

◆ getLayout()

NNFW_LAYOUT onert::api::python::getLayout ( const char *  layout = "")

Convert the layout with string to NNFW_LAYOUT

Parameters
[in]layoutlayout to be converted
Returns
proper layout if exists

Definition at line 53 of file nnfw_api_wrapper.cc.

54{
55 if (!strcmp(layout, "NCHW"))
56 {
58 }
59 else if (!strcmp(layout, "NHWC"))
60 {
62 }
63 else if (!strcmp(layout, "NONE"))
64 {
66 }
67 else
68 {
69 std::cout << "[ERROR]\tLAYOUT_TYPE\n";
70 exit(1);
71 }
72}
@ NNFW_LAYOUT_CHANNELS_LAST
Definition nnfw.h:141
@ NNFW_LAYOUT_CHANNELS_FIRST
Definition nnfw.h:146
@ NNFW_LAYOUT_NONE
Definition nnfw.h:136

References NNFW_LAYOUT_CHANNELS_FIRST, NNFW_LAYOUT_CHANNELS_LAST, and NNFW_LAYOUT_NONE.

Referenced by onert::api::python::NNFW_SESSION::set_input_layout(), and onert::api::python::NNFW_SESSION::set_output_layout().

◆ getStringType()

const char * onert::api::python::getStringType ( NNFW_TYPE  type)

Convert the type with NNFW_TYPE to string

Parameters
[in]typetype to be converted
Returns
proper type

Definition at line 112 of file nnfw_api_wrapper.cc.

113{
114 switch (type)
115 {
117 return "float32";
119 return "int32";
120 case NNFW_TYPE::NNFW_TYPE_TENSOR_QUANT8_ASYMM:
121 case NNFW_TYPE::NNFW_TYPE_TENSOR_UINT8:
122 return "uint8";
123 case NNFW_TYPE::NNFW_TYPE_TENSOR_BOOL:
124 return "bool";
125 case NNFW_TYPE::NNFW_TYPE_TENSOR_INT64:
126 return "int64";
127 case NNFW_TYPE::NNFW_TYPE_TENSOR_QUANT8_ASYMM_SIGNED:
128 return "int8";
129 case NNFW_TYPE::NNFW_TYPE_TENSOR_QUANT16_SYMM_SIGNED:
130 return "int16";
131 default:
132 std::cout << "[ERROR] NNFW_TYPE to String Failure\n";
133 exit(1);
134 }
135}
@ NNFW_TYPE_TENSOR_INT32
Definition onert-micro.h:79
@ NNFW_TYPE_TENSOR_FLOAT32
Definition onert-micro.h:77

References NNFW_TYPE_TENSOR_FLOAT32, and NNFW_TYPE_TENSOR_INT32.

Referenced by onert::api::python::NNFW_SESSION::input_tensorinfo(), and onert::api::python::NNFW_SESSION::output_tensorinfo().

◆ getType()

NNFW_TYPE onert::api::python::getType ( const char *  type = "")

Convert the type with string to NNFW_TYPE

Parameters
[in]typetype to be converted
Returns
proper type if exists

Definition at line 74 of file nnfw_api_wrapper.cc.

75{
76 if (!strcmp(type, "float32"))
77 {
79 }
80 else if (!strcmp(type, "int32"))
81 {
83 }
84 else if (!strcmp(type, "uint8"))
85 {
86 return NNFW_TYPE::NNFW_TYPE_TENSOR_UINT8;
87 // return NNFW_TYPE::NNFW_TYPE_TENSOR_QUANT8_ASYMM;
88 }
89 else if (!strcmp(type, "bool"))
90 {
91 return NNFW_TYPE::NNFW_TYPE_TENSOR_BOOL;
92 }
93 else if (!strcmp(type, "int64"))
94 {
95 return NNFW_TYPE::NNFW_TYPE_TENSOR_INT64;
96 }
97 else if (!strcmp(type, "int8"))
98 {
99 return NNFW_TYPE::NNFW_TYPE_TENSOR_QUANT8_ASYMM_SIGNED;
100 }
101 else if (!strcmp(type, "int16"))
102 {
103 return NNFW_TYPE::NNFW_TYPE_TENSOR_QUANT16_SYMM_SIGNED;
104 }
105 else
106 {
107 std::cout << "[ERROR] String to NNFW_TYPE Failure\n";
108 exit(1);
109 }
110}

References NNFW_TYPE_TENSOR_FLOAT32, and NNFW_TYPE_TENSOR_INT32.

Referenced by onert::api::python::NNFW_SESSION::set_input_tensorinfo().

◆ num_elems()

uint64_t onert::api::python::num_elems ( const nnfw_tensorinfo tensor_info)

Get the total number of elements in nnfw_tensorinfo->dims.

This function is called to set the size of the input, output array.

Parameters
[in]tensor_infoTensor info (shape, type, etc)
Returns
total number of elements

Definition at line 137 of file nnfw_api_wrapper.cc.

138{
139 uint64_t n = 1;
140 for (int32_t i = 0; i < tensor_info->rank; ++i)
141 {
142 n *= tensor_info->dims[i];
143 }
144 return n;
145}
int32_t dims[NNFW_MAX_RANK]

References nnfw_tensorinfo::dims, and nnfw_tensorinfo::rank.

Referenced by onert::api::python::NNFW_SESSION::set_input(), onert::api::python::NNFW_SESSION::set_output(), and onert::api::python::NNFW_SESSION::train_set_output().

◆ set_dims()

void onert::api::python::set_dims ( tensorinfo tensor_info,
const py::list &  array 
)

Set nnfw_tensorinfo->dims.

This function is called to set dimension array of tensorinfo.

Parameters
[in]tensor_infoTensor info (shape, type, etc)
[in]arrayarray to set dimension

Definition at line 157 of file nnfw_api_wrapper.cc.

158{
159 tensor_info.rank = py::len(array);
160 for (int32_t i = 0; i < tensor_info.rank; ++i)
161 {
162 tensor_info.dims[i] = py::cast<int32_t>(array[i]);
163 }
164}

References onert::api::python::tensorinfo::dims, and onert::api::python::tensorinfo::rank.

Referenced by bind_tensorinfo().