|
a |
|
b/man/merge_models.Rd |
|
|
1 |
% Generated by roxygen2: do not edit by hand |
|
|
2 |
% Please edit documentation in R/create_model_utils.R |
|
|
3 |
\name{merge_models} |
|
|
4 |
\alias{merge_models} |
|
|
5 |
\title{Merge two models} |
|
|
6 |
\usage{ |
|
|
7 |
merge_models( |
|
|
8 |
models, |
|
|
9 |
layer_names, |
|
|
10 |
layer_dense, |
|
|
11 |
solver = "adam", |
|
|
12 |
learning_rate = 1e-04, |
|
|
13 |
freeze_base_model = c(FALSE, FALSE), |
|
|
14 |
model_seed = NULL |
|
|
15 |
) |
|
|
16 |
} |
|
|
17 |
\arguments{ |
|
|
18 |
\item{models}{List of two models.} |
|
|
19 |
|
|
|
20 |
\item{layer_names}{Vector of length 2 with names of layers to merge.} |
|
|
21 |
|
|
|
22 |
\item{layer_dense}{Vector specifying number of neurons per dense layer after last LSTM or CNN layer (if no LSTM used).} |
|
|
23 |
|
|
|
24 |
\item{solver}{Optimization method, options are \verb{"adam", "adagrad", "rmsprop"} or \code{"sgd"}.} |
|
|
25 |
|
|
|
26 |
\item{learning_rate}{Learning rate for optimizer.} |
|
|
27 |
|
|
|
28 |
\item{freeze_base_model}{Boolean vector of length 2. Whether to freeze weights of individual models.} |
|
|
29 |
|
|
|
30 |
\item{model_seed}{Set seed for model parameters in tensorflow if not \code{NULL}.} |
|
|
31 |
} |
|
|
32 |
\value{ |
|
|
33 |
A keras model merging two input models. |
|
|
34 |
} |
|
|
35 |
\description{ |
|
|
36 |
Combine two models at certain layers and add dense layer(s) afterwards. |
|
|
37 |
} |
|
|
38 |
\examples{ |
|
|
39 |
\dontshow{if (reticulate::py_module_available("tensorflow")) (if (getRversion() >= "3.4") withAutoprint else force)(\{ # examplesIf} |
|
|
40 |
model_1 <- create_model_lstm_cnn(layer_lstm = c(64, 64), maxlen = 50, layer_dense = c(32, 4), |
|
|
41 |
verbose = FALSE) |
|
|
42 |
model_2 <- create_model_lstm_cnn(layer_lstm = c(32), maxlen = 40, |
|
|
43 |
layer_dense = c(8, 2), verbose = FALSE) |
|
|
44 |
# get names of second to last layers |
|
|
45 |
num_layers_1 <- length(model_1$get_config()$layers) |
|
|
46 |
layer_name_1 <- model_1$get_config()$layers[[num_layers_1 - 1]]$name |
|
|
47 |
num_layers_2 <- length(model_2$get_config()$layers) |
|
|
48 |
layer_name_2 <- model_2$get_config()$layers[[num_layers_2 - 1]]$name |
|
|
49 |
# merge models |
|
|
50 |
model <- merge_models(models = list(model_1, model_2), |
|
|
51 |
layer_names = c(layer_name_1, layer_name_2), |
|
|
52 |
layer_dense = c(6, 2), |
|
|
53 |
freeze_base_model = c(FALSE, FALSE)) |
|
|
54 |
\dontshow{\}) # examplesIf} |
|
|
55 |
} |