/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠDeep ĠLearning Ġproject Ġcontributors . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin x . dl . api . inference . keras Ċ Ċ import Ġorg . jetbrains . kotlin x . dl . api . core . dsl . functional Ċ import Ġorg . jetbrains . kotlin x . dl . api . core . layer . core . Dense Ċ import Ġorg . jetbrains . kotlin x . dl . api . core . layer . core . Input Ċ import Ġorg . jetbrains . kotlin x . dl . api . core . layer . freeze Ċ import Ġorg . jetbrains . kotlin x . dl . api . core . layer . merge .* Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ class ĠMerge Layers Import Export Test Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Add (" test _ add ")( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsubtract () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Subtract (" test _ subtract ")( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmultiply () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Multiply (" test _ multiply ")( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmaximum () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Maximum (" test _ maximum ")( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġminimum () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Minimum (" test _ minimum ")( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġaverage () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Average (" test _ average ")( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġconcatenate () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ). apply Ġ{ Ġfreeze () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ). apply Ġ{ Ġfreeze () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Concat enate ( name Ġ= Ġ" test _ concatenate ", Ġaxis Ġ= Ġ 1 )( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdot () Ġ{ ĊĠĠĠĠĠĠĠ ĠLayer Import Export Test . run ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunctional Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ+ Input ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 1 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 1 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdense 2 Ġ= Ġ+ Dense ( name Ġ= Ġ" Dense 2 ", Ġoutput Size Ġ= Ġ 5 )( input ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Dot ( name Ġ= Ġ" test _ dot ", Ġaxis Ġ= Ġint ArrayOf ( 1 , Ġ 1 ), Ġnormalize Ġ= Ġtrue )( dense 1 , Ġdense 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }