computeTemperature: Sample from the daily conditional gaussian distributions.

View source: R/computeTemperature.R

computeTemperatureR Documentation

Sample from the daily conditional gaussian distributions.

Description

Compute the stochastic temperature given the parameters of conditional gaussian distributions as returned by downscalePredict.keras on a trained model (see downscaleTrain.keras) that optimized the loss function gaussianLoss.

Usage

computeTemperature(mean = NULL, log_var = NULL)

Arguments

mean

A grid. The mean of the daily gaussian conditional distributions, as returned by downscalePredict.keras when we use the gaussian loss function.

log_var

A grid. The log of the variance ("log_beta") of the daily conditional distributions, as returned by downscalePredict.keras when we use the gaussian loss function.

Value

A climate4R grid with the deterministic or stochastic temporal serie depending on whether the simulate parameter is FALSE or TRUE.

Author(s)

J. Bano-Medina

See Also

bernouilliGammaLoss a custom loss function for Bernouilli-Gamma distributions gaussianLoss a custom loss function for gaussian distributions downscaleTrain.keras for training a downscaling deep model with keras downscalePredict.keras for predicting with a keras model prepareNewData.keras for predictor preparation with new (test) data

Examples


require(climate4R.datasets)
require(transformeR)
data("NCEP_Iberia_hus850", "NCEP_Iberia_psl", "NCEP_Iberia_ta850")
x <- makeMultiGrid(NCEP_Iberia_hus850, NCEP_Iberia_psl, NCEP_Iberia_ta850)
data("VALUE_Iberia_tas")
y <- VALUE_Iberia_tas
inputs <- layer_input(shape = c(getShape(x,"lat"),getShape(x,"lon"),getShape(x,"var")))
hidden <- inputs %>% 
  layer_conv_2d(filters = 25, kernel_size = c(3,3), activation = 'relu') %>%  
  layer_conv_2d(filters = 10, kernel_size = c(3,3), activation = 'relu') %>% 
  layer_flatten() %>% 
  layer_dense(units = 10, activation = "relu")
outputs1 <- layer_dense(hidden,units = getShape(y,"loc"))
outputs2 <- layer_dense(hidden,units = getShape(y,"loc"))
outputs <- layer_concatenate(list(outputs1,outputs2))
model <- keras_model(inputs = inputs, outputs = outputs)
pred <- downscaleCV.keras(x, y, model,
sampling.strategy = "kfold.chronological", folds = 4, 
scaleGrid.args = list(type = "standardize"),
prepareData.keras.args = list(first.connection = "conv",
                              last.connection = "dense",
                              channels = "last"),
compile.args = list(loss = gaussianLoss(last.connection = "dense"), 
                    optimizer = optimizer_adam()),
fit.args = list(batch_size = 100, epochs = 10, validation_split = 0.1),
                          loss = "gaussianLoss")

# We sample from the daily conditional gaussian distributions
pred <- computeTemperature(mean = subsetGrid(pred,var = "mean"),
                           log_var = subsetGrid(pred,var = "log_var"))


SantanderMetGroup/downscaleR.keras documentation built on July 7, 2023, 1:22 p.m.