Implement the following operations for Android NN runtime.
- CONV_FLOAT32
- DEPTHWISE_CONV_FLOAT32
- AVERAGE_POOL_FLOAT32
- L2_POOL_FLOAT32
- MAX_POOL_FLOAT32
- RELU_FLOAT32
- RELU6_FLOAT32
- TANH_FLOAT32
- LOGISTIC_FLOAT32
Bug: 63905942
Test: mm
Test: End-to-end test with MobileNet pass
Change-Id: I3eaa9794c7cdffd01792d26c5d6497c8d56d8605
diff --git a/common/OperationsUtils.cpp b/common/OperationsUtils.cpp
index fa9b4ea..401f7e6 100644
--- a/common/OperationsUtils.cpp
+++ b/common/OperationsUtils.cpp
@@ -23,10 +23,10 @@
namespace nn {
bool SameShape(const Shape& in1, const Shape& in2) {
- if (in1.type != in2.type || in1.numberOfDimensions != in2.numberOfDimensions) {
+ if (in1.type != in2.type || in1.dimensions.size() != in2.dimensions.size()) {
return false;
}
- for (uint32_t i = 0; i < in1.numberOfDimensions; i++) {
+ for (size_t i = 0; i < in1.dimensions.size(); i++) {
if (in1.dimensions[i] != in2.dimensions[i]) {
return false;
}
@@ -34,30 +34,28 @@
return true;
}
-bool SetShape(const Shape& in, const Shape* out) {
- if (in.type != out->type || in.numberOfDimensions != out->numberOfDimensions) {
+bool SetShape(const Shape& in, Shape* out) {
+ if (in.type != out->type || in.dimensions.size() != out->dimensions.size()) {
return false;
}
- for (uint32_t i = 0; i < in.numberOfDimensions; i++) {
- out->dimensions[i] = in.dimensions[i];
- }
+ out->dimensions = in.dimensions;
return true;
}
uint32_t getNumberOfElements(const Shape& shape) {
uint32_t count = 1;
- for (uint32_t i = 0; i < shape.numberOfDimensions; i++) {
+ for (size_t i = 0; i < shape.dimensions.size(); i++) {
count *= shape.dimensions[i];
}
return count;
}
uint32_t getNumberOfDimensions(const Shape& shape) {
- return shape.numberOfDimensions;
+ return shape.dimensions.size();
}
uint32_t getSizeOfDimension(const Shape& shape, uint32_t dimensionIdx) {
- if (dimensionIdx >= shape.numberOfDimensions) {
+ if (dimensionIdx >= shape.dimensions.size()) {
// TODO, log the error
return 0;
}