#include "core/modelIR/Graph.h"
#include "core/modelIR/operations/VariableOp.h"
#include "core/modelIR/operations/FullyConnectedOp.h"
+#include "core/modelIR/operations/CappedReluOp.h"
#include "core/modelIR/operations/Conv2DOp.h"
#include "core/modelIR/operations/DepthwiseConv2DOp.h"
#include "core/modelIR/operations/PoolOp.h"
#include "core/modelIR/operations/ReshapeOp.h"
#include "core/modelIR/operations/ConcatOp.h"
#include "core/modelIR/operations/BiasAddOp.h"
+#include "core/modelIR/operations/SigmoidOp.h"
#include "core/modelIR/operations/SoftmaxOp.h"
#include "core/modelIR/operations/ScaleOp.h"
#include "core/modelIR/operations/EluOp.h"
* @param op_constr functor which creates main operations of graph
* @param input_shapes vector of network input shapes
* */
-void fillGraph(Graph& g, OpConstructor op_constr, const vector<Shape>& input_shapes) {
+void fillGraph(Graph& g, const OpConstructor& op_constr, const vector<Shape>& input_shapes) {
// Create inputs
vector<mir::IODescriptor> inputs;
int num_inputs = input_shapes.size();
ArtifactGeneratorCppCode code_gen(code_out);
}
-TEST(acl_backend_mir_to_dom, DISABLED_capped_relu) {
- // TODO
-}
-
TEST(acl_backend_mir_to_dom, concat) {
Graph g;
OpConstructor op_generator = [](Graph& g, const vector<IODescriptor>& inputs) {
// TODO
}
-TEST(acl_backend_mir_to_dom, relu) {
+/**
+ * @brief Function to test simple activation operations
+ * @param op_generator functor that generates target operator
+ */
+static void testActivationOp(const OpConstructor& op_generator) {
Graph g;
- OpConstructor op_generator = [](Graph& g, const std::vector<IODescriptor>& inputs) {
- return g.create<mir::ops::ReluOp>("relu", inputs[0]);
- };
vector<Shape> input_shapes{{1, 10, 10, 3}};
fillGraph(g, op_generator, input_shapes);
ArtifactGeneratorCppCode code_gen(code_out);
}
+TEST(acl_backend_mir_to_dom, relu) {
+ OpConstructor op_generator = [](Graph& g, const std::vector<IODescriptor>& inputs) {
+ return g.create<mir::ops::ReluOp>("relu", inputs[0]);
+ };
+
+ testActivationOp(op_generator);
+}
+
+TEST(acl_backend_mir_to_dom, capped_relu) {
+ float cap = 6;
+ OpConstructor op_generator = [cap](Graph& g, const std::vector<IODescriptor>& inputs) {
+ return g.create<mir::ops::CappedReluOp>("capped_relu", inputs[0], cap);
+ };
+
+ testActivationOp(op_generator);
+}
+
+TEST(acl_backend_mir_to_dom, sigmoid) {
+ OpConstructor op_generator = [](Graph& g, const std::vector<IODescriptor>& inputs) {
+ return g.create<mir::ops::SigmoidOp>("sigmoid", inputs[0]);
+ };
+
+ testActivationOp(op_generator);
+}
+
TEST(acl_backend_mir_to_dom, DISABLED_elu) {
// TODO
}
-TEST(acl_backend_mir_to_dom, DISABLED_tanh) {
- // TODO
+TEST(acl_backend_mir_to_dom, tanh) {
+ OpConstructor op_generator = [](Graph& g, const std::vector<IODescriptor>& inputs) {
+ return g.create<mir::ops::TanhOp>("tanh", inputs[0]);
+ };
+
+ testActivationOp(op_generator);
}
TEST(acl_backend_mir_to_dom, DISABLED_reduce_mean) {