Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

Layer

Create a custom Layer


Description

Create a custom Layer

Usage

Layer(
  classname,
  initialize,
  build = NULL,
  call = NULL,
  compute_output_shape = NULL,
  ...,
  inherit = tensorflow::tf$keras$layers$Layer
)

Arguments

classname

the name of the custom Layer.

initialize

a function. This is where you define the arguments used to further build your layer. For example, a dense layer would take the units argument. You should always call super()$`__init__()` to initialize the base inherited layer.

build

a function that takes input_shape as argument. This is where you will define your weights. Note that if your layer doesn’t define trainable weights then you need not implement this method.

call

This is where the layer’s logic lives. Unless you want your layer to support masking, you only have to care about the first argument passed to call (the input tensor).

compute_output_shape

a function that takes input_shape as an argument. In case your layer modifies the shape of its input, you should specify here the shape transformation logic. This allows Keras to do automatic shape inference. If you don’t modify the shape of the input then you need not implement this method.

...

Any other methods and/or attributes can be specified using named arguments. They will be added to the layer class.

inherit

the Keras layer to inherit from

Value

A function that wraps create_layer, similar to keras::layer_dense.

Examples

## Not run: 

layer_dense2 <- Layer(
  "Dense2",
  
  initialize = function(units) {
    super()$`__init__`()
    self$units <- as.integer(units)
  },
  
  build = function(input_shape) {
    print(class(input_shape))
    self$kernel <- self$add_weight(
      name = "kernel",
      shape = list(input_shape[[2]], self$units),
      initializer = "uniform",
      trainable = TRUE
    )
  },
  
  call = function(x) {
    tensorflow::tf$matmul(x, self$kernel)
  },
  
  compute_output_shape = function(input_shape) {
    list(input_shape[[1]], self$units)
  }
  
)

l <- layer_dense2(units = 10)
l(matrix(runif(10), ncol = 1))


## End(Not run)

keras

R Interface to 'Keras'

v2.4.0
MIT + file LICENSE
Authors
Daniel Falbel [ctb, cph, cre], JJ Allaire [aut, cph], François Chollet [aut, cph], RStudio [ctb, cph, fnd], Google [ctb, cph, fnd], Yuan Tang [ctb, cph] (<https://orcid.org/0000-0001-5243-233X>), Wouter Van Der Bijl [ctb, cph], Martin Studer [ctb, cph], Sigrid Keydana [ctb]
Initial release

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.