View source: R/nn2poly_methods.R
predict.nn2poly | R Documentation |
nn2poly
objects.Predicted values obtained with a nn2poly
object on given data.
## S3 method for class 'nn2poly'
predict(object, newdata, layers = NULL, ...)
object |
Object of class inheriting from 'nn2poly'. |
newdata |
Input data as matrix, vector or dataframe. Number of columns (or elements in vector) should be the number of variables in the polynomial (dimension p). Response variable to be predicted should not be included. |
layers |
Vector containing the chosen layers from |
... |
Further arguments passed to or from other methods. |
Internally uses eval_poly()
to obtain the predictions. However, this only
works with a objects of class nn2poly
while eval_poly()
can be used
with a manually created polynomial in list form.
When object
contains all the internal polynomials also, as given by
nn2poly(object, keep_layers = TRUE)
, it is important to note that there
are two polynomial items per layer (input/output). These polynomial items will
also contain several polynomials of the same structure, one per neuron in the
layer, stored as matrix rows in $values
. Please see the NN2Poly
original paper for more details.
Note also that "linear" layers will contain the same input and output results as Taylor expansion is not used and thus the polynomials are also the same. Because of this, in the situation of evaluating multiple layers we provide the final layer with "input" and "output" even if they are the same, for consistency.
Returns a matrix or list of matrices with the evaluation of each
polynomial at each layer as given by the provided object
of class
nn2poly
.
If object
contains the polynomials of the last layer, as given by
nn2poly(object, keep_layers = FALSE)
, then the output is a matrix with
the evaluation of each data point on each polynomial. In this matrix, each
column represents the evaluation of a polynomial and each column corresponds
to each point in the new data to be evaluated.
If object
contains all the internal polynomials also, as given by
nn2poly(object, keep_layers = TRUE)
, then the output is a list of
layers (represented by layer_i
), where each one is another list with
input
and output
elements, where each one contains a matrix
with the evaluation of the "input" or "output" polynomial at the given layer,
as explained in the case without internal polynomials.
nn2poly()
: function that obtains the nn2poly
polynomial
object, eval_poly()
: function that can evaluate polynomials in general,
stats::predict()
: generic predict function.
# Build a NN structure with random weights, with 2 (+ bias) inputs,
# 4 (+bias) neurons in the first hidden layer with "tanh" activation
# function, 4 (+bias) neurons in the second hidden layer with "softplus",
# and 1 "linear" output unit
weights_layer_1 <- matrix(rnorm(12), nrow = 3, ncol = 4)
weights_layer_2 <- matrix(rnorm(20), nrow = 5, ncol = 4)
weights_layer_3 <- matrix(rnorm(5), nrow = 5, ncol = 1)
# Set it as a list with activation functions as names
nn_object = list("tanh" = weights_layer_1,
"softplus" = weights_layer_2,
"linear" = weights_layer_3)
# Obtain the polynomial representation (order = 3) of that neural network
final_poly <- nn2poly(nn_object, max_order = 3)
# Define some new data, it can be vector, matrix or dataframe
newdata <- matrix(rnorm(10), ncol = 2, nrow = 5)
# Predict using the obtained polynomial
predict(object = final_poly, newdata = newdata)
# Change the last layer to have 3 outputs (as in a multiclass classification)
# problem
weights_layer_4 <- matrix(rnorm(20), nrow = 5, ncol = 4)
# Set it as a list with activation functions as names
nn_object = list("tanh" = weights_layer_1,
"softplus" = weights_layer_2,
"linear" = weights_layer_4)
# Obtain the polynomial representation of that neural network
# Polynomial representation of each hidden neuron is given by
final_poly <- nn2poly(nn_object, max_order = 3, keep_layers = TRUE)
# Define some new data, it can be vector, matrix or dataframe
newdata <- matrix(rnorm(10), ncol = 2, nrow = 5)
# Predict using the obtained polynomials (for all layers)
predict(object = final_poly, newdata = newdata)
# Predict using the obtained polynomials (for chosen layers)
predict(object = final_poly, newdata = newdata, layers = c(2,3))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.