Skip to content

Shape of input array in Conv1D operation #213

@matteodonati

Description

@matteodonati

Hello everyone,

I'm currently trying to import a 1D CNN from Tensorflow using Mbed. In particular, I have data from six different sensors stored as follow:

input_data[150][6] = { {x1, y1, z1, x2, y2, z2}, {x1, y1, z1, x2, y2, z2}, {x1, y1, z1, x2, y2, z2}, ... }

so basically, in each batch, I have 150 timesteps, and in each timestep I have six values (channels).

In my C++ code I created a new input Tensor as follow:

Tensor input = new RomTensor({1, 150, 6}, flt, input_data);

The problem is, when I try to compile the application I get the following errors:

Compile [ 5.0%]: main.cpp
[Warning] quantizationPrimitives.hpp@24,35: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] utensor_string.hpp@15,23: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] Convolution.hpp@29,33: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@30,32: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@31,38: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@32,39: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@49,33: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@50,32: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@51,38: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@52,39: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@69,33: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@70,32: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@71,38: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@72,39: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@91,33: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@92,32: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@93,38: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] Convolution.hpp@94,39: type qualifiers ignored on function return type [-Wignored-qualifiers]
[Warning] main.cpp@179,43: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
[Warning] main.cpp@375,20: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] Matrix_kernels.hpp@44,22: unused variable 'input_shape' [-Wunused-variable]
[Warning] Matrix_kernels.hpp@44,22: unused variable 'input_shape' [-Wunused-variable]
[Warning] TensorMap.hpp@41,9: unused variable 'i' [-Wunused-variable]
[Warning] TensorMap.hpp@87,23: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] arenaAllocator.hpp@229,12: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Warning] arenaAllocator.hpp@229,12: comparison between signed and unsigned integer expressions [-Wsign-compare]
[Error] Convolution_kernels.hpp@104,49: conversion from 'int' to 'IntegralValue' is ambiguous
[Warning] Convolution_kernels.hpp@23,17: unused variable 'out_depth' [-Wunused-variable]
[Error] Convolution_kernels.hpp@104,49: conversion from 'int' to 'IntegralValue' is ambiguous
[Warning] Convolution_kernels.hpp@23,17: unused variable 'out_depth' [-Wunused-variable]
[ERROR] In file included from ./uTensor/src/uTensor/core/tensorBase.hpp:3:0,
from ./uTensor/src/uTensor/core/tensor.hpp:5,
from ./uTensor/src/uTensor/core/TensorMap.hpp:7,
from ./uTensor/src/uTensor/core/modelBase.hpp:3,
from ./uTensor/src/uTensor.h:6,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/core/quantizationPrimitives.hpp:24:35: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int num_channels() const { return _num_channels; };
^~~~~
In file included from ./uTensor/src/uTensor/core/tensor.hpp:6:0,
from ./uTensor/src/uTensor/core/TensorMap.hpp:7,
from ./uTensor/src/uTensor/core/modelBase.hpp:3,
from ./uTensor/src/uTensor.h:6,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/core/utensor_string.hpp: In member function 'uint32_t uTensor::string::hash(const char*)':
./uTensor/src/uTensor/core/utensor_string.hpp:15:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < strlen(c); i++) {
~~^~~~~~~~~~~
In file included from ./uTensor/src/uTensor.h:21:0,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/ops/Convolution.hpp: At global scope:
./uTensor/src/uTensor/ops/Convolution.hpp:29:33: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t height() const { return filter->get_shape()[1]; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:30:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t width() const { return filter->get_shape()[2]; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:31:38: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t in_channels() const { return filter->get_shape()[3]; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:32:39: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t out_channels() const { return filter->get_shape()[0]; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:49:33: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t height() const { return h; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:50:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t width() const { return w; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:51:38: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t in_channels() const { return 1; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:52:39: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t out_channels() const { return c; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:69:33: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t height() const { return h; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:70:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t width() const { return w; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:71:38: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t in_channels() const { return 1; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:72:39: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t out_channels() const { return c; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:91:33: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t height() const { return h; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:92:32: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t width() const { return w; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:93:38: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t in_channels() const { return 1; }
^~~~~
./uTensor/src/uTensor/ops/Convolution.hpp:94:39: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
inline const int16_t out_channels() const { return c; }
^~~~~
.\main.cpp: In function 'void init()':
.\main.cpp:179:43: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
print_text("Initializing", 10, 59, 76, 15);
^
.\main.cpp: In function 'void set_activity(const uTensor::Tensor&)':
.\main.cpp:375:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < num_elems; i++)
~~^~~~~~~~~~~
In file included from ./uTensor/src/uTensor/ops/Matrix.hpp:6:0,
from ./uTensor/src/uTensor.h:22,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/ops/Matrix_kernels.hpp: In instantiation of 'void uTensor::matrix_mult_kernel_v2(uTensor::Tensor&, const uTensor::Tensor&, const uTensor::Tensor&, Bias, uTensor::Fuseable::Activation) [with T = float; Bias = uTensor::ReferenceOperators::MatrixMultOperatorV2::wBias; uTensor::Fuseable::Activation = std::function<float(float)>]':
./uTensor/src/uTensor/ops/Matrix.hpp:75:55: required from here
./uTensor/src/uTensor/ops/Matrix_kernels.hpp:44:22: warning: unused variable 'input_shape' [-Wunused-variable]
const TensorShape& input_shape = input->get_shape();
^~~~~~~~~~~
./uTensor/src/uTensor/ops/Matrix_kernels.hpp: In instantiation of 'void uTensor::matrix_mult_kernel_v2(uTensor::Tensor&, const uTensor::Tensor&, const uTensor::Tensor&, Bias, uTensor::Fuseable::Activation) [with T = float; Bias = uTensor::ReferenceOperators::MatrixMultOperatorV2::NoBias; uTensor::Fuseable::Activation = std::function<float(float)>]':
./uTensor/src/uTensor/ops/Matrix.hpp:80:56: required from here
./uTensor/src/uTensor/ops/Matrix_kernels.hpp:44:22: warning: unused variable 'input_shape' [-Wunused-variable]
In file included from ./uTensor/src/uTensor/core/modelBase.hpp:3:0,
from ./uTensor/src/uTensor.h:6,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/core/TensorMap.hpp: In instantiation of 'uTensor::FixedTensorMap::FixedTensorMap(std::initializer_listuTensor::SimpleNamedTensor) [with unsigned int size = 1u]':
.\main.cpp:343:47: required from here
./uTensor/src/uTensor/core/TensorMap.hpp:41:9: warning: unused variable 'i' [-Wunused-variable]
int i = 0;
^
./uTensor/src/uTensor/core/TensorMap.hpp: In instantiation of 'uTensor::FixedTensorMap& uTensor::FixedTensorMap::operator=(const uTensor::FixedTensorMap&) [with unsigned int size = 1u]':
./uTensor/src/uTensor/core/modelBase.hpp:46:12: required from 'uTensor::ModelInterface<num_inputs, num_outputs>& uTensor::ModelInterface<num_inputs, num_outputs>::set_inputs(uTensor::FixedTensorMap<num_inputs>&&) [with unsigned int num_inputs = 1u; unsigned int num_outputs = 1u]'
.\main.cpp:343:47: required from here
./uTensor/src/uTensor/core/TensorMap.hpp:87:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int i = 0; i < size; i++) _map[i] = that._map[i];
~~^~~~~~
In file included from ./uTensor/src/uTensor.h:12:0,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/allocators/arenaAllocator.hpp: In instantiation of 'void* uTensor::localCircularArenaAllocator<size, T>::_allocate(size_t) [with unsigned int size = 1920u; T = short unsigned int; size_t = unsigned int]':
.\main.cpp:543:1: required from here
./uTensor/src/uTensor/allocators/arenaAllocator.hpp:229:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (sz > (end() - reinterpret_cast<uint8_t*>(cursor))){
~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./uTensor/src/uTensor/allocators/arenaAllocator.hpp: In instantiation of 'void* uTensor::localCircularArenaAllocator<size, T>::_allocate(size_t) [with unsigned int size = 7736u; T = short unsigned int; size_t = unsigned int]':
.\main.cpp:543:1: required from here
./uTensor/src/uTensor/allocators/arenaAllocator.hpp:229:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
In file included from ./uTensor/src/uTensor/ops/Convolution.hpp:6:0,
from ./uTensor/src/uTensor.h:21,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/ops/Convolution_kernels.hpp: In instantiation of 'void uTensor::generic_convolution_kernel(uTensor::Tensor&, const uTensor::Tensor&, Filter, Bias, uTensor::Padding, const uint16_t (&)[4]) [with T = signed char; Filter = uTensor::ReferenceOperators::ConvFilter; Bias = uTensor::ReferenceOperators::wBias; uint16_t = short unsigned int]':
./uTensor/src/uTensor/ops/Convolution.hpp:132:51: required from 'void uTensor::ReferenceOperators::Conv2dOperator::compute() [with T = signed char]'
.\main.cpp:543:1: required from here
./uTensor/src/uTensor/ops/Convolution_kernels.hpp:104:49: error: conversion from 'int' to 'IntegralValue' is ambiguous
out(batch, out_y, out_x, out_channel) = filter.finalize() + bias(out_channel);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ./uTensor/src/uTensor/core/quantizationPrimitives.hpp:3:0,
from ./uTensor/src/uTensor/core/tensorBase.hpp:3,
from ./uTensor/src/uTensor/core/tensor.hpp:5,
from ./uTensor/src/uTensor/core/TensorMap.hpp:7,
from ./uTensor/src/uTensor/core/modelBase.hpp:3,
from ./uTensor/src/uTensor.h:6,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/core/types.hpp:102:3: note: candidate: IntegralValue::IntegralValue(float&&)
IntegralValue(float&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:101:3: note: candidate: IntegralValue::IntegralValue(int32_t&&)
IntegralValue(int32_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:100:3: note: candidate: IntegralValue::IntegralValue(uint32_t&&)
IntegralValue(uint32_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:99:3: note: candidate: IntegralValue::IntegralValue(int16_t&&)
IntegralValue(int16_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:98:3: note: candidate: IntegralValue::IntegralValue(uint16_t&&)
IntegralValue(uint16_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:97:3: note: candidate: IntegralValue::IntegralValue(int8_t&&)
IntegralValue(int8_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:96:3: note: candidate: IntegralValue::IntegralValue(uint8_t&&)
IntegralValue(uint8_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:94:3: note: candidate: IntegralValue::IntegralValue(const float&)
IntegralValue(const float& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:93:3: note: candidate: IntegralValue::IntegralValue(const int32_t&)
IntegralValue(const int32_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:92:3: note: candidate: IntegralValue::IntegralValue(const uint32_t&)
IntegralValue(const uint32_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:91:3: note: candidate: IntegralValue::IntegralValue(const int16_t&)
IntegralValue(const int16_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:90:3: note: candidate: IntegralValue::IntegralValue(const uint16_t&)
IntegralValue(const uint16_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:89:3: note: candidate: IntegralValue::IntegralValue(const int8_t&)
IntegralValue(const int8_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:88:3: note: candidate: IntegralValue::IntegralValue(const uint8_t&)
IntegralValue(const uint8_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:106:18: note: initializing argument 1 of 'IntegralValue& IntegralValue::operator=(IntegralValue&&)'
IntegralValue& operator=(IntegralValue&& that);
^~~~~~~~
In file included from ./uTensor/src/uTensor/ops/Convolution.hpp:6:0,
from ./uTensor/src/uTensor.h:21,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/ops/Convolution_kernels.hpp:23:17: warning: unused variable 'out_depth' [-Wunused-variable]
const int16_t out_depth = filter.out_channels();
^~~~~~~~~
./uTensor/src/uTensor/ops/Convolution_kernels.hpp: In instantiation of 'void uTensor::generic_convolution_kernel(uTensor::Tensor&, const uTensor::Tensor&, Filter, Bias, uTensor::Padding, const uint16_t (&)[4]) [with T = signed char; Filter = uTensor::ReferenceOperators::ConvFilter; Bias = uTensor::ReferenceOperators::NoBias; uint16_t = short unsigned int]':
./uTensor/src/uTensor/ops/Convolution.hpp:136:51: required from 'void uTensor::ReferenceOperators::Conv2dOperator::compute() [with T = signed char]'
.\main.cpp:543:1: required from here
./uTensor/src/uTensor/ops/Convolution_kernels.hpp:104:49: error: conversion from 'int' to 'IntegralValue' is ambiguous
out(batch, out_y, out_x, out_channel) = filter.finalize() + bias(out_channel);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ./uTensor/src/uTensor/core/quantizationPrimitives.hpp:3:0,
from ./uTensor/src/uTensor/core/tensorBase.hpp:3,
from ./uTensor/src/uTensor/core/tensor.hpp:5,
from ./uTensor/src/uTensor/core/TensorMap.hpp:7,
from ./uTensor/src/uTensor/core/modelBase.hpp:3,
from ./uTensor/src/uTensor.h:6,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/core/types.hpp:102:3: note: candidate: IntegralValue::IntegralValue(float&&)
IntegralValue(float&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:101:3: note: candidate: IntegralValue::IntegralValue(int32_t&&)
IntegralValue(int32_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:100:3: note: candidate: IntegralValue::IntegralValue(uint32_t&&)
IntegralValue(uint32_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:99:3: note: candidate: IntegralValue::IntegralValue(int16_t&&)
IntegralValue(int16_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:98:3: note: candidate: IntegralValue::IntegralValue(uint16_t&&)
IntegralValue(uint16_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:97:3: note: candidate: IntegralValue::IntegralValue(int8_t&&)
IntegralValue(int8_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:96:3: note: candidate: IntegralValue::IntegralValue(uint8_t&&)
IntegralValue(uint8_t&& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:94:3: note: candidate: IntegralValue::IntegralValue(const float&)
IntegralValue(const float& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:93:3: note: candidate: IntegralValue::IntegralValue(const int32_t&)
IntegralValue(const int32_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:92:3: note: candidate: IntegralValue::IntegralValue(const uint32_t&)
IntegralValue(const uint32_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:91:3: note: candidate: IntegralValue::IntegralValue(const int16_t&)
IntegralValue(const int16_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:90:3: note: candidate: IntegralValue::IntegralValue(const uint16_t&)
IntegralValue(const uint16_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:89:3: note: candidate: IntegralValue::IntegralValue(const int8_t&)
IntegralValue(const int8_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:88:3: note: candidate: IntegralValue::IntegralValue(const uint8_t&)
IntegralValue(const uint8_t& u);
^~~~~~~~~~~~~
./uTensor/src/uTensor/core/types.hpp:106:18: note: initializing argument 1 of 'IntegralValue& IntegralValue::operator=(IntegralValue&&)'
IntegralValue& operator=(IntegralValue&& that);
^~~~~~~~
In file included from ./uTensor/src/uTensor/ops/Convolution.hpp:6:0,
from ./uTensor/src/uTensor.h:21,
from .\models/my_model/my_model.hpp:4,
from .\main.cpp:24:
./uTensor/src/uTensor/ops/Convolution_kernels.hpp:23:17: warning: unused variable 'out_depth' [-Wunused-variable]
const int16_t out_depth = filter.out_channels();
^~~~~~~~~

So the problem should be here:

[Error] Convolution_kernels.hpp@104,49: conversion from 'int' to 'IntegralValue' is ambiguous

Is the shape of input_data correct? How can I solve the issue?

Thank you.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions