--- a +++ b/man/merge_models.Rd @@ -0,0 +1,55 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/create_model_utils.R +\name{merge_models} +\alias{merge_models} +\title{Merge two models} +\usage{ +merge_models( + models, + layer_names, + layer_dense, + solver = "adam", + learning_rate = 1e-04, + freeze_base_model = c(FALSE, FALSE), + model_seed = NULL +) +} +\arguments{ +\item{models}{List of two models.} + +\item{layer_names}{Vector of length 2 with names of layers to merge.} + +\item{layer_dense}{Vector specifying number of neurons per dense layer after last LSTM or CNN layer (if no LSTM used).} + +\item{solver}{Optimization method, options are \verb{"adam", "adagrad", "rmsprop"} or \code{"sgd"}.} + +\item{learning_rate}{Learning rate for optimizer.} + +\item{freeze_base_model}{Boolean vector of length 2. Whether to freeze weights of individual models.} + +\item{model_seed}{Set seed for model parameters in tensorflow if not \code{NULL}.} +} +\value{ +A keras model merging two input models. +} +\description{ +Combine two models at certain layers and add dense layer(s) afterwards. +} +\examples{ +\dontshow{if (reticulate::py_module_available("tensorflow")) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} +model_1 <- create_model_lstm_cnn(layer_lstm = c(64, 64), maxlen = 50, layer_dense = c(32, 4), + verbose = FALSE) +model_2 <- create_model_lstm_cnn(layer_lstm = c(32), maxlen = 40, + layer_dense = c(8, 2), verbose = FALSE) +# get names of second to last layers +num_layers_1 <- length(model_1$get_config()$layers) +layer_name_1 <- model_1$get_config()$layers[[num_layers_1 - 1]]$name +num_layers_2 <- length(model_2$get_config()$layers) +layer_name_2 <- model_2$get_config()$layers[[num_layers_2 - 1]]$name +# merge models +model <- merge_models(models = list(model_1, model_2), + layer_names = c(layer_name_1, layer_name_2), + layer_dense = c(6, 2), + freeze_base_model = c(FALSE, FALSE)) +\dontshow{\}) # examplesIf} +}