Skip to content
Snippets Groups Projects

Scheduler backprop

Merged Maxence Naud requested to merge scheduler_backprop into dev
5 files
+ 107
24
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -20,6 +20,7 @@
@@ -20,6 +20,7 @@
#include "aidge/scheduler/Scheduler.hpp"
#include "aidge/scheduler/Scheduler.hpp"
#include "aidge/backend/cpu.hpp"
#include "aidge/backend/cpu.hpp"
 
#include "aidge/recipes/GraphViewHelper.hpp"
using namespace Aidge;
using namespace Aidge;
@@ -300,7 +301,7 @@ TEST_CASE("[cpu/scheduler] SequentialScheduler(forward)") {
@@ -300,7 +301,7 @@ TEST_CASE("[cpu/scheduler] SequentialScheduler(forward)") {
std::vector<std::shared_ptr<Aidge::Tensor>> dataIn = {inputTensor};
std::vector<std::shared_ptr<Aidge::Tensor>> dataIn = {inputTensor};
REQUIRE_NOTHROW(scheduler.forward(true, false, dataIn));
REQUIRE_NOTHROW(scheduler.forward(true, false, dataIn));
scheduler.saveSchedulingDiagram("schedulingSequential");
scheduler.saveSchedulingDiagram("schedulingSequential");
std::shared_ptr<Tensor> expectedOutput1 = std::make_shared<Tensor>(Array4D<int, 2, 3, 3, 3>{
std::shared_ptr<Tensor> expectedOutput1 = std::make_shared<Tensor>(Array4D<int, 2, 3, 3, 3>{
@@ -345,4 +346,45 @@ TEST_CASE("[cpu/scheduler] SequentialScheduler(forward)") {
@@ -345,4 +346,45 @@ TEST_CASE("[cpu/scheduler] SequentialScheduler(forward)") {
bool equal4 = (*other4 == expectedOutput4);
bool equal4 = (*other4 == expectedOutput4);
REQUIRE(equal4);
REQUIRE(equal4);
}
}
 
}
 
 
TEST_CASE("[cpu/scheduler] SequentialScheduler(backward)", "[scheduler][backward]") {
 
 
// create GraphView
 
std::shared_ptr<GraphView> gv = Sequential({ReLU("relu0"), Sqrt("srqt0"), ReLU("relu1")});
 
 
std::shared_ptr<Tensor> inputTensor =
 
std::make_shared<Tensor>(Array4D<float, 2, 1, 5, 5>{{{{{0.0f, 1.0f, 2.0f, 3.0f, 4.0f},
 
{5.0f, 6.0f, 7.0f, 8.0f, 9.0f},
 
{10.0f, 11.0f, 12.0f, 13.0f, 14.0f},
 
{15.0f, 16.0f, 17.0f, 18.0f, 19.0f},
 
{20.0f, 21.0f, 22.0f, 23.0f, 24.0f}}},
 
{{{25.0f, 26.0f, 27.0f, 28.0f, 29.0f},
 
{30.0f, 31.0f, 32.0f, 33.0f, 34.0f},
 
{35.0f, 36.0f, 37.0f, 38.0f, 39.0f},
 
{40.0f, 41.0f, 42.0f, 43.0f, 44.0f},
 
{45.0f, 46.0f, 47.0f, 48.0f, 49.0f}}}}});
 
auto label = inputTensor;
 
// implem already set to default
 
auto myProd = Producer(inputTensor, "prod");
 
myProd -> addChild(gv);
 
gv -> compile("cpu", DataType::Float32);
 
compile_gradient(gv);
 
SequentialScheduler scheduler(gv);
 
scheduler.forward();
 
auto predictedOutput = gv->getOrderedOutputs()[0].first;
 
 
std::shared_ptr<Tensor> targetOutput =
 
std::make_shared<Tensor>(Array4D<float, 2, 1, 5, 5>{{{{{0.0f, 1.0f, 1.0f, 2.0f, 2.0f},
 
{2.0f, 2.0f, 3.0f, 3.0f, 3.0f},
 
{3.0f, 3.0f, 3.0f, 4.0f, 4.0f},
 
{4.0f, 4.0f, 4.0f, 4.0f, 4.0f},
 
{4.0f, 5.0f, 5.0f, 5.0f, 5.0f}}},
 
{{{5.0f, 5.0f, 5.0f, 5.0f, 5.0f},
 
{5.0f, 6.0f, 6.0f, 6.0f, 6.0f},
 
{6.0f, 6.0f, 6.0f, 6.0f, 6.0f},
 
{6.0f, 6.0f, 6.0f, 7.0f, 7.0f},
 
{7.0f, 7.0f, 7.0f, 7.0f, 7.0f}}}}});
 
 
REQUIRE_NOTHROW(scheduler.backward({targetOutput}));
}
}
 
\ No newline at end of file
Loading