First, let's show the skeleton of this class. We need a number of functions here. First, we need to import the R6 package and create two auxiliary functions:
library(R6)set.seed(1234)softmax <- function(x){ xt <- exp(x-max(x)) return(xt/sum(xt))}zeros_like <- function(M){ return(matrix(0,dim(as.matrix(M))[1],dim(as.matrix(M))[2])) }
This will come in handy during the code to calculate the softmax and initialize matrices with the correct sizes. As before, our program needs the following basic functions:
- Forward propagation
- Backward propagation
- A sample from the obtained probability distribution
- Train the model
The structure of the class should look like:
RNN <- R6Class("RNN", public = list( hidden_size = NULL, ...