| testBlocks |
| graph(%a : Dynamic |
| %b : Dynamic |
| %c : Dynamic) { |
| %2 : int = prim::Constant[value=1]() |
| %3 : Dynamic = aten::add(%a, %b, %2) |
| %5 : Dynamic = prim::If(%c) |
| block0() { |
| %6 : int = prim::Constant[value=1]() |
| %7 : Dynamic = aten::add(%3, %3, %6) |
| -> (%7) |
| } |
| block1() { |
| %8 : int = prim::Constant[value=1]() |
| %9 : Dynamic = aten::add(%b, %3, %8) |
| %10 : int = prim::Constant[value=1]() |
| %11 : Dynamic = aten::add(%9, %3, %10) |
| -> (%11) |
| } |
| %12 : int = prim::Constant[value=1]() |
| %13 : Dynamic = aten::add(%5, %3, %12) |
| return (%13); |
| } |
| |
| graph(%a : Dynamic |
| %b : Dynamic |
| %c : Dynamic) { |
| %2 : int = prim::Constant[value=1]() |
| %3 : Dynamic = aten::add(%a, %b, %2) |
| %5 : Dynamic = prim::If(%c) |
| block0() { |
| %8 : int = prim::Constant[value=1]() |
| %9 : Dynamic = aten::add(%b, %3, %8) |
| %10 : int = prim::Constant[value=1]() |
| %11 : Dynamic = aten::add(%9, %3, %10) |
| -> (%11) |
| } |
| %12 : int = prim::Constant[value=1]() |
| %13 : Dynamic = aten::add(%5, %3, %12) |
| return (%13); |
| } |
| |
| graph(%a : Dynamic |
| %b : Dynamic |
| %c : Dynamic) { |
| %3 : int = prim::Constant[value=1]() |
| %4 : Dynamic = aten::add(%a, %b, %3) |
| %5 : Dynamic = prim::If(%c) |
| block0() { |
| %6 : int = prim::Constant[value=1]() |
| %7 : Dynamic = aten::add(%b, %4, %6) |
| %8 : int = prim::Constant[value=1]() |
| %9 : Dynamic = aten::add(%7, %4, %8) |
| -> (%9) |
| } |
| %10 : int = prim::Constant[value=1]() |
| %11 : Dynamic = aten::add(%5, %4, %10) |
| return (%11); |
| } |
| |
| testCreateAutodiffSubgraphs |
| graph(%0 : Dynamic |
| %1 : Dynamic |
| %2 : Dynamic |
| %3 : Dynamic |
| %4 : Dynamic) { |
| %7 : int = prim::Constant[value=1]() |
| %19 : int = prim::Constant[value=1]() |
| %23 : Dynamic, %24 : Dynamic = prim::DifferentiableGraph_0(%0, %3, %1, %4, %2) |
| return (%24, %23); |
| } |
| with prim::DifferentiableGraph_0 = graph(%1 : Dynamic |
| %2 : Dynamic |
| %4 : Dynamic |
| %5 : Dynamic |
| %17 : Dynamic) { |
| %0 : Dynamic = aten::mm(%1, %2) |
| %3 : Dynamic = aten::mm(%4, %5) |
| %7 : int = prim::Constant[value=1]() |
| %6 : Dynamic = aten::add(%0, %3, %7) |
| %8 : Dynamic, %9 : Dynamic, %10 : Dynamic, %11 : Dynamic = prim::ConstantChunk[chunks=4, dim=1](%6) |
| %12 : Dynamic = aten::sigmoid(%8) |
| %13 : Dynamic = aten::sigmoid(%11) |
| %14 : Dynamic = aten::tanh(%10) |
| %15 : Dynamic = aten::sigmoid(%9) |
| %16 : Dynamic = aten::mul(%15, %17) |
| %18 : Dynamic = aten::mul(%12, %14) |
| %20 : int = prim::Constant[value=1]() |
| %19 : Dynamic = aten::add(%16, %18, %20) |
| %21 : Dynamic = aten::tanh(%19) |
| %22 : Dynamic = aten::mul(%13, %21) |
| return (%19, %22); |
| } |
| |
| testDifferentiate |
| graph(%0 : Float(2, 3, 4) |
| %1 : Float(2, 3, 4)) { |
| %2 : Float(2, 3, 4) = aten::mul(%0, %1) |
| %3 : Float(2, 3, 4) = aten::mul(%2, %0) |
| %4 : int = prim::Constant[value=1]() |
| %5 : Float(2, 3, 4) = aten::add(%3, %1, %4) |
| return (%5, %2); |
| } |
| graph(%0 : Float(2, 3, 4) |
| %1 : Float(2, 3, 4) |
| %2 : Float(2, 3, 4) |
| %3 : Float(2, 3, 4) |
| %4 : Float(2, 3, 4)) { |
| %5 : int = prim::Constant[value=1]() |
| %6 : Float(2, 3, 4), %7 : Float(2, 3, 4) = prim::GradOf[name="aten::add"](%0) |
| block0() { |
| %8 : Float(2, 3, 4) = aten::mul(%0, %5) |
| -> (%0, %8) |
| } |
| %9 : Float(2, 3, 4), %10 : Float(2, 3, 4) = prim::GradOf[name="aten::mul"](%6) |
| block0() { |
| %11 : Float(2, 3, 4) = aten::mul(%6, %2) |
| %12 : Float(2, 3, 4) = aten::mul(%6, %4) |
| -> (%11, %12) |
| } |
| %13 : Dynamic = prim::AutogradAdd(%1, %9) |
| %14 : Float(2, 3, 4), %15 : Float(2, 3, 4) = prim::GradOf[name="aten::mul"](%13) |
| block0() { |
| %16 : Float(2, 3, 4) = aten::mul(%13, %3) |
| %17 : Float(2, 3, 4) = aten::mul(%13, %2) |
| -> (%16, %17) |
| } |
| %18 : Dynamic = prim::AutogradAdd(%10, %14) |
| %19 : Dynamic = prim::AutogradAdd(%7, %15) |
| return (%18, %19); |
| } |
| |
| testDifferentiateWithRequiresGrad |
| graph(%0 : Float(*) |
| %1 : Float(*)) { |
| %2 : Float(*) = aten::mul(%1, %1) |
| %3 : int = prim::Constant[value=1]() |
| %4 : Float(*) = aten::add(%2, %1, %3) |
| %5 : int = prim::Constant[value=1]() |
| %6 : Float(*) = aten::add(%4, %0, %5) |
| %7 : Float(*) = aten::mul(%6, %0) |
| %8 : int = prim::Constant[value=1]() |
| %9 : Float(*) = aten::add(%7, %1, %8) |
| return (%4, %9, %6); |
| } |
| graph(%0 : Float(*) |
| %1 : Float(*) |
| %2 : Float(*) |
| %3 : Float(*)) { |
| %4 : int = prim::Constant[value=1]() |
| %5 : Float(*), %6 : Dynamic = prim::GradOf[name="aten::add"](%0) |
| block0() { |
| %7 : Dynamic = aten::mul(%0, %4) |
| -> (%0, %7) |
| } |
| %8 : Dynamic, %9 : Dynamic = prim::GradOf[name="aten::mul"](%5) |
| block0() { |
| %10 : Dynamic = aten::mul(%5, %2) |
| %11 : Dynamic = aten::mul(%5, %3) |
| -> (%10, %11) |
| } |
| %12 : Dynamic = prim::AutogradAdd(%1, %8) |
| %13 : Dynamic, %14 : Dynamic = prim::GradOf[name="aten::add"](%12) |
| block0() { |
| %15 : Dynamic = aten::mul(%12, %4) |
| -> (%12, %15) |
| } |
| %16 : Dynamic = prim::AutogradAdd(%9, %14) |
| return (%16); |
| } |
| |