aboutsummaryrefslogtreecommitdiff
path: root/utils/Utils.h
diff options
context:
space:
mode:
authorIsabella Gottardi <isabella.gottardi@arm.com>2019-01-08 13:48:44 +0000
committerIsabella Gottardi <isabella.gottardi@arm.com>2019-08-06 07:58:16 +0000
commita7acb3cbabeb66ce647684466a04c96b2963c9c9 (patch)
tree7988b75372c8ad1dfa3c8d028ab3a603a5e5a047 /utils/Utils.h
parent4746326ecb075dcfa123aaa8b38de5ec3e534b60 (diff)
downloadComputeLibrary-a7acb3cbabeb66ce647684466a04c96b2963c9c9.tar.gz
COMPMID-1849: Implement CPPDetectionPostProcessLayer
* Add DetectionPostProcessLayer * Add DetectionPostProcessLayer at the graph Change-Id: I7e56f6cffc26f112d26dfe74853085bb8ec7d849 Signed-off-by: Isabella Gottardi <isabella.gottardi@arm.com> Reviewed-on: https://review.mlplatform.org/c/1639 Reviewed-by: Giuseppe Rossini <giuseppe.rossini@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'utils/Utils.h')
-rw-r--r--utils/Utils.h40
1 files changed, 16 insertions, 24 deletions
diff --git a/utils/Utils.h b/utils/Utils.h
index ba10d7c803..cc5dfbabc2 100644
--- a/utils/Utils.h
+++ b/utils/Utils.h
@@ -616,10 +616,10 @@ void save_to_ppm(T &tensor, const std::string &ppm_filename)
* @param[in] npy_filename Filename of the file to create.
* @param[in] fortran_order If true, save matrix in fortran order.
*/
-template <typename T>
+template <typename T, typename U = float>
void save_to_npy(T &tensor, const std::string &npy_filename, bool fortran_order)
{
- ARM_COMPUTE_ERROR_ON_DATA_TYPE_NOT_IN(&tensor, arm_compute::DataType::F32);
+ ARM_COMPUTE_ERROR_ON_DATA_TYPE_NOT_IN(&tensor, arm_compute::DataType::F32, arm_compute::DataType::QASYMM8);
std::ofstream fs;
try
@@ -637,33 +637,25 @@ void save_to_npy(T &tensor, const std::string &npy_filename, bool fortran_order)
// Map buffer if creating a CLTensor
map(tensor, true);
- switch(tensor.info()->data_type())
- {
- case arm_compute::DataType::F32:
- {
- std::vector<float> tmp; /* Used only to get the typestring */
- npy::Typestring typestring_o{ tmp };
- std::string typestring = typestring_o.str();
+ using typestring_type = typename std::conditional<std::is_floating_point<U>::value, float, qasymm8_t>::type;
- std::ofstream stream(npy_filename, std::ofstream::binary);
- npy::write_header(stream, typestring, fortran_order, shape);
+ std::vector<typestring_type> tmp; /* Used only to get the typestring */
+ npy::Typestring typestring_o{ tmp };
+ std::string typestring = typestring_o.str();
- arm_compute::Window window;
- window.use_tensor_dimensions(tensor.info()->tensor_shape());
+ std::ofstream stream(npy_filename, std::ofstream::binary);
+ npy::write_header(stream, typestring, fortran_order, shape);
- arm_compute::Iterator in(&tensor, window);
+ arm_compute::Window window;
+ window.use_tensor_dimensions(tensor.info()->tensor_shape());
- arm_compute::execute_window_loop(window, [&](const arm_compute::Coordinates & id)
- {
- stream.write(reinterpret_cast<const char *>(in.ptr()), sizeof(float));
- },
- in);
+ arm_compute::Iterator in(&tensor, window);
- break;
- }
- default:
- ARM_COMPUTE_ERROR("Unsupported format");
- }
+ arm_compute::execute_window_loop(window, [&](const arm_compute::Coordinates & id)
+ {
+ stream.write(reinterpret_cast<const char *>(in.ptr()), sizeof(typestring_type));
+ },
+ in);
// Unmap buffer if creating a CLTensor
unmap(tensor);