diff --git a/src/arraymancer/nn/layers/conv2D.nim b/src/arraymancer/nn/layers/conv2D.nim index ec8e47e9..03f690be 100644 --- a/src/arraymancer/nn/layers/conv2D.nim +++ b/src/arraymancer/nn/layers/conv2D.nim @@ -138,7 +138,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[Conv2D[T]], + layerType: typedesc[Conv2D], inShape: seq[int], outChannels: int, kernelSize: Size2D, diff --git a/src/arraymancer/nn/layers/embedding.nim b/src/arraymancer/nn/layers/embedding.nim index 3fa50c3c..a107c2e6 100644 --- a/src/arraymancer/nn/layers/embedding.nim +++ b/src/arraymancer/nn/layers/embedding.nim @@ -109,7 +109,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[Embedding[T]], + layerType: typedesc[Embedding], vocabSize, embedSize: int, paddingIdx: VocabIdx = -1 ): Embedding[T] = diff --git a/src/arraymancer/nn/layers/flatten.nim b/src/arraymancer/nn/layers/flatten.nim index 852f04f0..b1715215 100644 --- a/src/arraymancer/nn/layers/flatten.nim +++ b/src/arraymancer/nn/layers/flatten.nim @@ -8,7 +8,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[Flatten[T]], + layerType: typedesc[Flatten], inShape: seq[int] ): Flatten[T] = diff --git a/src/arraymancer/nn/layers/gcn.nim b/src/arraymancer/nn/layers/gcn.nim index b796601a..b741b6e9 100644 --- a/src/arraymancer/nn/layers/gcn.nim +++ b/src/arraymancer/nn/layers/gcn.nim @@ -111,7 +111,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[GCNLayer[T]], + layerType: typedesc[GCNLayer], numInput, numOutput: int ): GCNLayer[T] = ## Initializes a graph convolutional layer with `num_input` input features and `num_output` output features. diff --git a/src/arraymancer/nn/layers/gru.nim b/src/arraymancer/nn/layers/gru.nim index 1e1cced6..f216c798 100644 --- a/src/arraymancer/nn/layers/gru.nim +++ b/src/arraymancer/nn/layers/gru.nim @@ -168,7 +168,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[GRULayer[T]], + layerType: typedesc[GRULayer], numInputFeatures, hiddenSize, layers: int ): GRULayer[T] = diff --git a/src/arraymancer/nn/layers/linear.nim b/src/arraymancer/nn/layers/linear.nim index aa5df72b..a823d1e6 100644 --- a/src/arraymancer/nn/layers/linear.nim +++ b/src/arraymancer/nn/layers/linear.nim @@ -120,7 +120,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[Linear[T]], + layerType: typedesc[Linear], numInput, numOutput: int ): Linear[T] = ## Initializes a linear layer with `numInput` input features and `numOutput` output features. diff --git a/src/arraymancer/nn/layers/maxpool2D.nim b/src/arraymancer/nn/layers/maxpool2D.nim index 38642b96..b64176b8 100644 --- a/src/arraymancer/nn/layers/maxpool2D.nim +++ b/src/arraymancer/nn/layers/maxpool2D.nim @@ -120,7 +120,7 @@ type proc init*[T]( ctx: Context[Tensor[T]], - layerType: typedesc[MaxPool2D[T]], + layerType: typedesc[MaxPool2D], inShape: seq[int], kernelSize, padding, stride: Size2D ): MaxPool2D[T] = diff --git a/src/arraymancer/nn/nn_dsl.nim b/src/arraymancer/nn/nn_dsl.nim index 30b6ab52..a1d84552 100644 --- a/src/arraymancer/nn/nn_dsl.nim +++ b/src/arraymancer/nn/nn_dsl.nim @@ -131,7 +131,7 @@ proc createModelType(layerInfos: seq[LayerInfo], modelName: NimNode): NimNode = proc createInitProc(layerInfos: seq[LayerInfo], sectionInfo: SectionInfo, modelName: NimNode): NimNode = # creates init function of the model, e.g.: - # proc init[T](ctx: Context[AnyTensor[T]], modelType: typedesc[SomeConvNet[T]], h: auto; w: auto): SomeConvNet[T] = + # proc init[T](ctx: Context[AnyTensor[T]], modelType: typedesc[SomeConvNet], h: auto; w: auto): SomeConvNet[T] = # template cv(): auto = # result.cv # template mp(): auto = @@ -201,10 +201,7 @@ proc createInitProc(layerInfos: seq[LayerInfo], sectionInfo: SectionInfo, modelN genSym(nskParam, "modelType"), newNimNode(nnkBracketExpr).add( ident"typedesc", - newNimNode(nnkBracketExpr).add( - modelName, - underlyingTypeSymbol - ) + modelName ) ) ] @@ -357,7 +354,7 @@ macro network*(modelName: untyped, config: untyped): untyped = ## .. code:: nim ## proc init*[T]( ## ctx: Context[Tensor[T]], # could also be Context[AnyTensor[T]] for example - ## layerType: typedesc[MyLayer[T]], + ## layerType: typedesc[MyLayer], ## myInitParam: string ## # ... here you can add all the necessary init parameters, like shapes and number of output features ## ): MyLayer[T] =