A hybrid dynamic forest (gap) model (FINN) that can be configured
as a fully mechanistic, process-based model, like classic forest gap models,
or with its demographic processes (growth, mortality, regeneration) replaced
by deep neural networks (DNNs), or any combination of the two. Provides
functions to define a model and its mechanistic or empirical components,
calibrate it to forest inventory data, and interpret the calibrated
processes. FINN is implemented with the 'torch' package, which supplies GPU
support and the automatic differentiation used to calibrate the model by
stochastic gradient descent; no knowledge of 'torch' is required. The hybrid
modeling approach is described in Pichler and Käber (2026)
FINN is an R package designed for modular, dynamic vegetation (forest) models. Modularity is achieved by implementing all components and the platform in R and by allowing users to pass their own processes to FINN as R functions. Nevertheless, FINN is highly performant (has a low runtime) because it is implemented in torch for R, which allows access to highly optimised routines and enables FINN to run on the GPU. Consequently, FINN scales extremely well with the number of sites. Furthermore, FINN can seamlessly integrate neural networks into processes, or even replace them entirely (hybrid modelling). Additionally, FINN’s parameters can be optimised directly using stochastic gradient descent.
You can learn more about FINN in our preprint Pichler & Käber, 2025 - Inferring processes within dynamic forest models using hybrid modeling
You can install the development version of FINN from GitHub with:
# install.packages("devtools")
devtools::install_github("FINNverse/FINN")
Start with Introduction to FINN, then browse the rest:
| Vignette | What it covers |
|---|---|
| Introduction to FINN | the model, its processes, and a first simulation |
| Parameterising FINN from Ellenberg indicator values | deriving species niches from Ellenberg values; succession along a climate gradient |
| Preparing your data for FINN | going from a raw tree list to FINN’s input tables |
| Fitting FINN to forest inventory data | calibrating on US FIA data, with a held-out test |
| Mortality: a binomial response and a NN process | choosing the right likelihood, and scoring it honestly |
The same pages ship with the package — vignette(package = "FINN")
lists them.