[nnc] Remove redundant CLCopy layer from inference sequence (#2449)
authorEfimov Alexander/AI Tools Lab/./Samsung Electronics <a.efimov@samsung.com>
Fri, 30 Nov 2018 12:42:48 +0000 (15:42 +0300)
committerРоман Михайлович Русяев/AI Tools Lab /SRR/Staff Engineer/삼성전자 <r.rusyaev@samsung.com>
Fri, 30 Nov 2018 12:42:48 +0000 (15:42 +0300)
Remove buggy CLCopy layer from inference, since it is not needed, and corrupts data

Signed-off-by: Efimov Alexander <a.efimov@samsung.com>
contrib/nnc/passes/acl_soft_backend/AclCppOpGenerator.cpp

index 051f317..06aa194 100644 (file)
@@ -480,24 +480,15 @@ void AclCppOpGenerator::visit(ops::DropoutOp& op) {
   // Just copy input tensor to the output one.
   auto prev_ops = op.getPrevNodes();
   assert(prev_ops.size() == 1);
-  auto in_op = prev_ops[0].op;
+  Operation* in_op = prev_ops[0].op;
 
   // Get input tensor identifier in the generated artifact.
-  auto in = AF::id(tensorName(in_op));
+  std::shared_ptr<ArtifactId> in = AF::id(tensorName(in_op));
 
   // Generate output tensor description in the DOM.
-  auto out = genTensor(op, op.getOutputShape(0));
-
-  // Create a CLCopy instance.
-  auto copy_layer_var = _artifactClass->var(false, "arm_compute::CLCopy",
-                                            out->name() + "_copy_layer");
-  auto copy_layer = copy_layer_var->use();
-
-  // Call the: copy_layer.configure(&in, &out);
-  _constrBlock->call("configure", {AF::ref(in), AF::ref(out)}, copy_layer);
+  shared_ptr<ArtifactId> out = AF::id(tensorName(&op));
 
-  // Call the: copy_layer.run();
-  _infBlock->call("run", {}, copy_layer);
+  _constrBlock->var("arm_compute::CLTensor&", out->name(), {}, {in});
 }
 
 void AclCppOpGenerator::visit(ops::TanhOp& op) {