Amortized Bayesian Inference of the Diffusion Model for Conflict Tasks

Authored by Stefan T. Radev and Simon Schaefer

Large part of the work below are based on the following paper: - Schaefer et al., (2026). Amortized Bayesian Workflow for Modeling Congruency Effects Using the Diffusion Model for Conflict Tasks. Computational Brain & Behavior. https://link.springer.com/article/10.1007/s42113-026-00266-y

Model Specification

The Diffusion Model for Conflict Tasks (DMC; Ulrich et al., 2015) extends the standard Drift Diffusion Model by including a time-varying drift-rate component. This allows it to explain reaction time distributions and error rates in conflict tasks such as the Stroop, Simon, and Flanker tasks. In these tasks, performance differs between congruent and incongruent trials because relevant and irrelevant stimulus dimensions can either support the same response or interfere with one another. For example, in a flanker task, participants respond to the direction of a central arrow while ignoring the surrounding arrows.

  • Congruent trial (e.g., → → → → → ): The central target arrow and the flankers all point in the same direction. Because the irrelevant flankers support the same response as the target, responses are usually faster and more accurate.
  • Incongruent trial (e.g., → → ← → →): The central target arrow points in the opposite direction from the flankers. Here, the irrelevant flankers activate a competing response, which typically leads to slower responses and more errors.

Compared with a stationary DDM-like process, it has been argued that non-stationary processing better captures this conflict process because it can model how the influence of irrelevant information changes over time. As a result, the DMC is assumed to provide a better account of how the congruency effect develops across the reaction time distribution, for example in delta plots.

Similar to a classic DDM, the DMC comprises a constant drift rate \(\mu_c\). This route of evidence accumulation, also referred to as the controlled process is driven by the processing of relevant information such as the target stimulus in a flanker paradigm. Simultaneously, a second automatic drift process integrates irrelevant information such as the flanker stimuli in the flanker task. A second time-varying drift rate \(\mu_a\) reflects this automatic activation at a given point in time \(t\) formulated as the derivative of a reshaped gamma function:

\[\mu_a(t) = A \cdot e^{-t/\tau}\cdot \left[ \frac{t\cdot e}{(a-1)\cdot \tau}\right]^{a-1} \cdot \left[\frac{a - 1}{t}-\frac{1}{\tau}\right], a > 1\]

The sign of the amplitude A is defined by the congruency of relevant and irrelevant information. E.g. in a Flanker task, the amplitude is positive if the flankers (irrelevant dimension) are similar to the target (relevenat information). Adding up both drift rate \(\mu_c\) and \(\mu_a\) results in the superimposed process, resembling the typically observed congruency effect in RTs and error rates.

DMC_illustration
import numpy as np
import pandas as pd
import seaborn as sns

import bayesflow as bf

from dmc import DMC, dmc_helpers
param_names = ('A', 'tau', 'mu_c', 'mu_r', 'b', 'sd_r')

simulator = DMC(
    prior_means=np.array([20.49, 118.36, 0.57, 358.01, 61.0, 36.93]),
    prior_sds=np.array([8.4, 37.6, 0.12, 24.27, 13.23, 8.6]), 
    sdr_fixed=None,
    param_names=param_names,
    tmax=1500,
    dt=1
)

Note that the maximum decision time is per default set to \(1200 ms\) and the time discretization is set to \(dt = 1 ms\). Setting \(dt\) to lower values will result in a higher temporal resolution while prolonging the simulation time. \(t_{max}\) should be chosen so that \(\mu_r + t_{max}\) is higher than the maximum RT in the observed data. In order to account for longer RTs, we set \(t_{max}\) to 1500 ms.

Training with Raw Data

num_train = 1000
num_test = 100

train_data = simulator.sample(batch_size=num_train)
test_data = simulator.sample(batch_size=num_test)

Shape conventions of simulator.sample(): The returned dict contains two kinds of arrays:

  • Parameters (e.g., "A", "tau", …): shape (B, 1) — one scalar per simulated individual.
  • Trial-level data ("rt", "accuracy", "conditions"): shape (B, N, 1)\(N\) trials per individual, with a trailing feature dimension of 1.
  • "num_obs": shape (B, 1) — records how many trials were simulated (can vary between batches when min_num_obs / max_num_obs are set).

The trailing dimension on trial-level data exists because BayesFlow’s summary nets (e.g., SetTransformer) expect inputs shaped (B, N, D) where \(D\) is the number of features per set element.

for key, i in train_data.items():
    print(f'{key}: {i.shape}')
A: (1000, 1)
tau: (1000, 1)
mu_c: (1000, 1)
mu_r: (1000, 1)
b: (1000, 1)
sd_r: (1000, 1)
rt: (1000, 200, 1)
accuracy: (1000, 200, 1)
conditions: (1000, 200, 1)
num_obs: (1000, 1)

In conflict tasks, Conditional Accuracy Functions (CAFs), Cumulative Distribution Functions (CDFs), and delta functions are commonly used to examine how cognitive control and interference effects unfold across the full reaction time (RT) distribution, rather than being summarized by single mean values. Together, these distributional analyses provide complementary insights into both the speed and accuracy of responses under congruent and incongruent conditions.

  • Conditional Accuracy Functions (CAFs) characterize how response accuracy varies as a function of response speed. By dividing RTs into quantile-based bins and computing accuracy within each bin, CAFs reveal whether fast responses are more error-prone and whether accuracy improves or deteriorates for slower responses. In conflict tasks, CAFs are particularly informative about early, impulsive response tendencies versus later, more controlled responding, and whether incongruent trials show disproportionate accuracy costs at specific portions of the RT distribution.

  • Cumulative Distribution Functions (CDFs) describe the overall shape of the RT distribution for each condition. CDFs plot the cumulative probability of responding as a function of RT, allowing direct comparison of how quickly responses are generated under congruent and incongruent conditions. Differences between CDFs indicate global shifts or shape differences in RT distributions, such as whether incongruent trials produce uniformly slower responses or selectively affect only slower portions of the distribution.

  • \(\Delta\) - functions focus explicitly on the difference between congruent and incongruent RT distributions across response speed. Rather than collapsing the congruency effect into a single mean RT difference, delta functions show how this effect changes across quantiles of the RT distribution. This makes it possible to assess whether interference is constant, increases, or decreases as responses become slower, thereby providing insight into the temporal dynamics of conflict processing and control.

format_sim_data and only_convergents: format_sim_data converts the dict of arrays returned by the simulator into a tidy pandas DataFrame. The simulated diffusion process sometimes fails to reach a decision boundary within \(t_{max}\) — these are “non-convergent” trials. only_convergents=True excludes them (they’d have an RT of \(-1\) or similar sentinel), keeping only trials where a decision was actually made.

df_complete = dmc_helpers.format_sim_data(test_data, only_convergents=True)

for id in np.arange(0, num_test):

    # select data from individual id
    df_id = df_complete[df_complete['id'] == id]

    # plot rt distribution excluding values of -1
    sns.kdeplot(df_id, x = 'rt', hue='congruency', alpha=0.2)

workflow = bf.BasicWorkflow(
    inference_network=bf.networks.CouplingFlow(),
    summary_network=bf.networks.SetTransformer(embed_dims=(16, 16), summary_dim=32),
    inference_variables=param_names,
    summary_variables=["rt", "conditions", "accuracy"],
    standardize="all"
)
history = workflow.fit_offline(
    train_data, batch_size=16, epochs=15, validation_data=test_data
)
INFO:bayesflow:Fitting on dataset instance of OfflineDataset.
INFO:bayesflow:Building on a test batch.
Epoch 1/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 16s 168ms/step - loss: 7.8923 - val_loss: 6.6566

Epoch 2/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 109ms/step - loss: 6.1054 - val_loss: 5.7760

Epoch 3/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 106ms/step - loss: 5.4360 - val_loss: 5.1114

Epoch 4/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 107ms/step - loss: 5.1468 - val_loss: 4.8897

Epoch 5/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 109ms/step - loss: 4.9095 - val_loss: 4.7116

Epoch 6/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 115ms/step - loss: 4.7500 - val_loss: 4.9605

Epoch 7/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 117ms/step - loss: 4.5539 - val_loss: 4.5220

Epoch 8/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 117ms/step - loss: 4.5243 - val_loss: 4.3843

Epoch 9/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 118ms/step - loss: 4.3390 - val_loss: 4.3715

Epoch 10/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 119ms/step - loss: 4.2466 - val_loss: 4.5295

Epoch 11/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 117ms/step - loss: 4.1958 - val_loss: 4.2928

Epoch 12/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 117ms/step - loss: 4.1699 - val_loss: 4.2487

Epoch 13/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 7s 118ms/step - loss: 4.1114 - val_loss: 4.2141

Epoch 14/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 8s 120ms/step - loss: 4.0672 - val_loss: 4.2230

Epoch 15/15

63/63 ━━━━━━━━━━━━━━━━━━━━ 8s 123ms/step - loss: 4.0475 - val_loss: 4.2123
INFO:bayesflow:Training completed in 2.07 minutes.
samples = workflow.sample(conditions=test_data, num_samples=1000)
INFO:bayesflow:Sampling completed in 4.71 seconds.
figs = workflow.plot_default_diagnostics(
    test_data=test_data, 
    samples=samples
)

metrics = workflow.compute_default_diagnostics(test_data=test_data, samples=samples)
metrics
WARNING:bayesflow:Using new default normalize='prior' for a more dynamic range. To reproduce previous behavior, set normalize='range'.
A tau mu_c mu_r b sd_r
NRMSE 0.604628 0.930012 0.430153 0.377351 0.450111 1.025645
Log Gamma 3.179287 0.270818 0.566712 1.789717 -0.050010 2.856014
Calibration Error 0.027632 0.033421 0.050263 0.014474 0.028421 0.011842
Posterior Contraction 0.682176 0.210749 0.835730 0.862319 0.798811 0.110256

Training with Informative Summary Statistics

Key details in summary_stats:

  • [..., 0] strips the trailing dimension: (B, N, 1)(B, N), since each variable is stored as a single-column “feature”.
  • Masking with np.where: np.where(mask, rt, np.nan) keeps RTs where the mask is True and fills the rest with NaN. np.nanquantile then computes quantiles while ignoring NaNs — this avoids explicitly indexing ragged groups per batch.
  • stats[np.isnan(stats)] = -1.: If a group is empty (e.g., no errors for a given condition in a batch), nanquantile returns NaN. Replacing with \(-1\) provides a sentinel value the network can learn to ignore, since RTs are always positive.
  • **kwargs: Absorbs extra dict keys (e.g., "A", "tau", "num_obs", …) that are present in the data dict but not needed here. This makes the function compatible with summary_stats(**train_data).
def summary_stats(conditions, rt, accuracy, num_quantiles=5, **kwargs):
    """Computes hand-crafted summary statistics to be used on batched conditions, 
    rts, and accuracies.
    """

    quantiles = np.linspace(0.05, 0.95, num_quantiles)
    rt        = rt[..., 0]
    conditions = conditions[..., 0]
    accuracy   = accuracy[..., 0]

    quantile_parts = []
    for cond_val in (0, 1):
        for acc_val in (0, 1):
            mask = (conditions == cond_val) & (accuracy == acc_val)
            q = np.nanquantile(np.where(mask, rt, np.nan), quantiles, axis=1).T
            quantile_parts.append(q)

        
    acc_c0 = np.nanmean(np.where(conditions == 0, accuracy, np.nan), axis=1, keepdims=True)
    acc_c1 = np.nanmean(np.where(conditions == 1, accuracy, np.nan), axis=1, keepdims=True)

    stats = np.concatenate([*quantile_parts, acc_c0, acc_c1], axis=1)

    stats[np.isnan(stats)] = -1.

    return {"summary_stats": stats}

The |= (merge-update) pattern: train_data |= summary_stats(**train_data) unpacks the entire data dict as keyword arguments to summary_stats. The function ignores unneeded keys via **kwargs and returns {"summary_stats": ...}. The |= operator merges this back into the original dict, adding the new "summary_stats" key alongside the existing "rt", "conditions", etc.

train_data |= summary_stats(**train_data)
test_data |= summary_stats(**test_data)
c:\Users\radevs\AppData\Local\anaconda3\envs\bf\Lib\site-packages\numpy\lib\_nanfunctions_impl.py:1593: RuntimeWarning: All-NaN slice encountered
  return fnb._ureduce(a,

Why no summary_network anymore?

In the first workflow above, raw trial-level data (rt, conditions, accuracy) was passed as summary_variables and a SetTransformer learned to compress them into a fixed-size representation. Here, we instead pre-compute hand-crafted summary statistics and pass them via inference_conditions. This means the inference network receives a fixed (B, 22) vector directly. No learnable summary network is needed. This can be more interpretable and sometimes more data-efficient, but it requires domain knowledge to design good summaries.

workflow = bf.BasicWorkflow(
    inference_network=bf.networks.CouplingFlow(),
    inference_variables=param_names,
    inference_conditions="summary_stats",
    standardize="all",
)
history = workflow.fit_offline(
    train_data, epochs=50, batch_size=32, validation_data=test_data
)
INFO:bayesflow:Fitting on dataset instance of OfflineDataset.
INFO:bayesflow:Building on a test batch.
Epoch 1/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 6s 112ms/step - loss: 8.3409 - val_loss: 7.9190

Epoch 2/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 7.5666 - val_loss: 6.9911

Epoch 3/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 6.2321 - val_loss: 5.4081

Epoch 4/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 5.0773 - val_loss: 4.6707

Epoch 5/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 4.5370 - val_loss: 4.5749

Epoch 6/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 4.2442 - val_loss: 4.2461

Epoch 7/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 4.1671 - val_loss: 4.1328

Epoch 8/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.9760 - val_loss: 4.1766

Epoch 9/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.9503 - val_loss: 4.0523

Epoch 10/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.8589 - val_loss: 4.1523

Epoch 11/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.7894 - val_loss: 3.9756

Epoch 12/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.7430 - val_loss: 4.0315

Epoch 13/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.7248 - val_loss: 4.0553

Epoch 14/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.6714 - val_loss: 4.2021

Epoch 15/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.6740 - val_loss: 4.0590

Epoch 16/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.6726 - val_loss: 4.0777

Epoch 17/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.6403 - val_loss: 4.1006

Epoch 18/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.5775 - val_loss: 4.0304

Epoch 19/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.5432 - val_loss: 4.1006

Epoch 20/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4982 - val_loss: 4.1022

Epoch 21/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4938 - val_loss: 4.0496

Epoch 22/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4785 - val_loss: 4.1923

Epoch 23/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4615 - val_loss: 4.1549

Epoch 24/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.4859 - val_loss: 4.1469

Epoch 25/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.4456 - val_loss: 4.1428

Epoch 26/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.4314 - val_loss: 4.0810

Epoch 27/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4024 - val_loss: 4.2032

Epoch 28/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4002 - val_loss: 4.2635

Epoch 29/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3902 - val_loss: 4.2061

Epoch 30/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3655 - val_loss: 4.2320

Epoch 31/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.3499 - val_loss: 4.2812

Epoch 32/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.3423 - val_loss: 4.3016

Epoch 33/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3472 - val_loss: 4.3055

Epoch 34/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2998 - val_loss: 4.3093

Epoch 35/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3130 - val_loss: 4.2570

Epoch 36/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2956 - val_loss: 4.2877

Epoch 37/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2875 - val_loss: 4.3371

Epoch 38/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.2881 - val_loss: 4.3529

Epoch 39/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.2568 - val_loss: 4.4007

Epoch 40/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2585 - val_loss: 4.4139

Epoch 41/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.2555 - val_loss: 4.4457

Epoch 42/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.2689 - val_loss: 4.4348

Epoch 43/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.2572 - val_loss: 4.4319

Epoch 44/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2567 - val_loss: 4.4380

Epoch 45/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2274 - val_loss: 4.4425

Epoch 46/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2259 - val_loss: 4.4351

Epoch 47/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.2362 - val_loss: 4.4362

Epoch 48/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2541 - val_loss: 4.4329

Epoch 49/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2218 - val_loss: 4.4330

Epoch 50/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2300 - val_loss: 4.4329
INFO:bayesflow:Training completed in 17.98 seconds.
samples = workflow.sample(conditions=test_data, num_samples=1000)
INFO:bayesflow:Sampling completed in 1.07 seconds.
figs = workflow.plot_default_diagnostics(test_data, samples=samples)

Flow Matching vs. Diffusion Model

Separate Workflows

workflows = {}
estimators = {
    "fm": bf.networks.FlowMatching(subnet_kwargs={"widths": (128,)*3}),
    "cf": bf.networks.CouplingFlow()
}
histories = {}

for name, estimator in estimators.items():

    workflow = bf.BasicWorkflow(
        inference_network=estimator,
        inference_variables=param_names,
        inference_conditions="summary_stats",
        standardize="all",
    )

    history = workflow.fit_offline(
        train_data, epochs=50, batch_size=32, validation_data=test_data
    )

    workflows[name] = workflow
    histories[name] = history
INFO:bayesflow:Fitting on dataset instance of OfflineDataset.
INFO:bayesflow:Building on a test batch.
Epoch 1/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 4s 81ms/step - loss: 2.7185 - val_loss: 2.0849

Epoch 2/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.9025 - val_loss: 1.5525

Epoch 3/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.6046 - val_loss: 1.4497

Epoch 4/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 1.3944 - val_loss: 1.3906

Epoch 5/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.3114 - val_loss: 1.2330

Epoch 6/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.2280 - val_loss: 1.2034

Epoch 7/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.1746 - val_loss: 0.9951

Epoch 8/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.1155 - val_loss: 1.1651

Epoch 9/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0865 - val_loss: 1.0754

Epoch 10/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0786 - val_loss: 0.9850

Epoch 11/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0685 - val_loss: 1.0211

Epoch 12/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0427 - val_loss: 1.0287

Epoch 13/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0337 - val_loss: 1.0271

Epoch 14/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0019 - val_loss: 0.9548

Epoch 15/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0312 - val_loss: 1.0016

Epoch 16/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0008 - val_loss: 1.0187

Epoch 17/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 1.0110 - val_loss: 0.9720

Epoch 18/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9609 - val_loss: 1.0262

Epoch 19/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9582 - val_loss: 1.1195

Epoch 20/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.9610 - val_loss: 0.9979

Epoch 21/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.9539 - val_loss: 0.9868

Epoch 22/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9142 - val_loss: 0.9672

Epoch 23/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9768 - val_loss: 1.0775

Epoch 24/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9495 - val_loss: 0.8989

Epoch 25/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9023 - val_loss: 0.9436

Epoch 26/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9240 - val_loss: 0.8860

Epoch 27/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9191 - val_loss: 1.0958

Epoch 28/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9481 - val_loss: 0.9197

Epoch 29/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8932 - val_loss: 0.8588

Epoch 30/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.9136 - val_loss: 1.0346

Epoch 31/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9125 - val_loss: 0.9637

Epoch 32/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8767 - val_loss: 0.8656

Epoch 33/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8939 - val_loss: 1.1134

Epoch 34/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9054 - val_loss: 0.9524

Epoch 35/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8865 - val_loss: 0.8992

Epoch 36/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8956 - val_loss: 0.9461

Epoch 37/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8906 - val_loss: 0.9266

Epoch 38/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9098 - val_loss: 0.9478

Epoch 39/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8804 - val_loss: 0.9140

Epoch 40/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - loss: 0.8573 - val_loss: 0.9895

Epoch 41/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8526 - val_loss: 0.8799

Epoch 42/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8657 - val_loss: 1.0050

Epoch 43/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.9187 - val_loss: 0.9031

Epoch 44/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8688 - val_loss: 0.8918

Epoch 45/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8934 - val_loss: 0.8177

Epoch 46/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8577 - val_loss: 0.9393

Epoch 47/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8981 - val_loss: 0.9270

Epoch 48/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8690 - val_loss: 0.9492

Epoch 49/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8807 - val_loss: 0.8916

Epoch 50/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - loss: 0.8438 - val_loss: 0.8974
INFO:bayesflow:Training completed in 9.46 seconds.
INFO:bayesflow:Fitting on dataset instance of OfflineDataset.
INFO:bayesflow:Building on a test batch.
Epoch 1/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 5s 93ms/step - loss: 8.3293 - val_loss: 7.9300

Epoch 2/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 7.5828 - val_loss: 6.9926

Epoch 3/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 6.2715 - val_loss: 5.5095

Epoch 4/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 5.0504 - val_loss: 4.6920

Epoch 5/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 4.4781 - val_loss: 4.3297

Epoch 6/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 4.2240 - val_loss: 4.3615

Epoch 7/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 4.0885 - val_loss: 4.2190

Epoch 8/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.9984 - val_loss: 4.1993

Epoch 9/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.8910 - val_loss: 4.1890

Epoch 10/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.8372 - val_loss: 4.1199

Epoch 11/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.7554 - val_loss: 4.2193

Epoch 12/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.7685 - val_loss: 4.1229

Epoch 13/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.7172 - val_loss: 4.1712

Epoch 14/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.6742 - val_loss: 4.0211

Epoch 15/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.6403 - val_loss: 4.0107

Epoch 16/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.5883 - val_loss: 4.1448

Epoch 17/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.5960 - val_loss: 4.1361

Epoch 18/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.5527 - val_loss: 4.2430

Epoch 19/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.5404 - val_loss: 4.2959

Epoch 20/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.5317 - val_loss: 4.0439

Epoch 21/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.5170 - val_loss: 4.1143

Epoch 22/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.4826 - val_loss: 4.1390

Epoch 23/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.4665 - val_loss: 4.1439

Epoch 24/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4732 - val_loss: 4.3105

Epoch 25/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4107 - val_loss: 4.2385

Epoch 26/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4062 - val_loss: 4.2228

Epoch 27/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.4101 - val_loss: 4.2821

Epoch 28/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3931 - val_loss: 4.2268

Epoch 29/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.3646 - val_loss: 4.2866

Epoch 30/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3446 - val_loss: 4.2624

Epoch 31/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - loss: 3.3628 - val_loss: 4.3702

Epoch 32/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.3407 - val_loss: 4.2236

Epoch 33/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.3169 - val_loss: 4.4223

Epoch 34/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.3279 - val_loss: 4.4552

Epoch 35/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.3056 - val_loss: 4.3616

Epoch 36/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2951 - val_loss: 4.3809

Epoch 37/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2880 - val_loss: 4.3187

Epoch 38/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2792 - val_loss: 4.3977

Epoch 39/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2783 - val_loss: 4.4247

Epoch 40/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2534 - val_loss: 4.3897

Epoch 41/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2459 - val_loss: 4.4584

Epoch 42/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.2340 - val_loss: 4.4334

Epoch 43/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 9ms/step - loss: 3.2373 - val_loss: 4.4619

Epoch 44/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2451 - val_loss: 4.4891

Epoch 45/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.2401 - val_loss: 4.4940

Epoch 46/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2400 - val_loss: 4.4847

Epoch 47/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2166 - val_loss: 4.4850

Epoch 48/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2169 - val_loss: 4.4808

Epoch 49/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 7ms/step - loss: 3.2462 - val_loss: 4.4814

Epoch 50/50

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 8ms/step - loss: 3.2285 - val_loss: 4.4813
INFO:bayesflow:Training completed in 16.32 seconds.
figs = workflows["fm"].plot_default_diagnostics(
    test_data=test_data, 
    num_samples=300,
)

figs = workflows["cf"].plot_default_diagnostics(
    test_data=test_data, 
    num_samples=300
)

Using Deep Ensembles

EnsembleWorkflow trains multiple inference networks jointly on the same data. Each member learns a different posterior approximation, and their samples can be merged for better coverage.

workflow = bf.EnsembleWorkflow(
    inference_networks={
        "fm": bf.networks.FlowMatching(subnet_kwargs={"widths": (64,)*3}),
        "dm": bf.networks.DiffusionModel(subnet_kwargs={"widths": (64,)*3}),
    },
    # The rest goes like before
    inference_variables=param_names,
    inference_conditions="summary_stats",
    standardize="all"
)

history = workflow.fit_offline(train_data, batch_size=32, epochs=100, validation_data=test_data)
INFO:bayesflow:EnsembleIndexedDataset: ensemble_size=2, batch_size=32, num_samples=1000, data_reuse=1.0 -> reduction_factor=1.00, window_size=1000, steps_per_epoch=32. Overlap is enforced at the subdataset level (member-specific windows into the global index pool).
INFO:bayesflow:Fitting on dataset instance of EnsembleDataset.
INFO:bayesflow:Building on a test batch.
Epoch 1/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 6s 122ms/step - dm/loss: 2.5058 - fm/loss: 2.9388 - loss: 5.4446 - val_dm/loss: 2.5018 - val_fm/loss: 2.9874 - val_loss: 5.4892

Epoch 2/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.4300 - fm/loss: 2.6749 - loss: 5.1049 - val_dm/loss: 0.7957 - val_fm/loss: 1.4401 - val_loss: 2.2357

Epoch 3/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.4576 - fm/loss: 1.9250 - loss: 4.3826 - val_dm/loss: 1.2014 - val_fm/loss: 1.8155 - val_loss: 3.0169

Epoch 4/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 2.1621 - fm/loss: 2.0378 - loss: 4.2000 - val_dm/loss: 0.8746 - val_fm/loss: 2.5016 - val_loss: 3.3763

Epoch 5/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.5714 - fm/loss: 1.6475 - loss: 3.2189 - val_dm/loss: 1.2338 - val_fm/loss: 1.4518 - val_loss: 2.6857

Epoch 6/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.5451 - fm/loss: 1.4986 - loss: 3.0437 - val_dm/loss: 0.7244 - val_fm/loss: 1.5274 - val_loss: 2.2518

Epoch 7/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.6956 - fm/loss: 1.4407 - loss: 3.1363 - val_dm/loss: 1.2454 - val_fm/loss: 0.9504 - val_loss: 2.1958

Epoch 8/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 4.7974 - fm/loss: 1.3261 - loss: 6.1234 - val_dm/loss: 0.4408 - val_fm/loss: 1.3368 - val_loss: 1.7776

Epoch 9/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4514 - fm/loss: 1.6359 - loss: 3.0873 - val_dm/loss: 1.4344 - val_fm/loss: 1.2964 - val_loss: 2.7307

Epoch 10/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3222 - fm/loss: 1.3103 - loss: 2.6324 - val_dm/loss: 0.6875 - val_fm/loss: 1.0301 - val_loss: 1.7176

Epoch 11/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.7021 - fm/loss: 1.5721 - loss: 3.2742 - val_dm/loss: 0.7449 - val_fm/loss: 0.4122 - val_loss: 1.1571

Epoch 12/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3637 - fm/loss: 1.0498 - loss: 2.4136 - val_dm/loss: 0.9379 - val_fm/loss: 1.0611 - val_loss: 1.9989

Epoch 13/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1958 - fm/loss: 1.2847 - loss: 2.4805 - val_dm/loss: 2.4199 - val_fm/loss: 0.7572 - val_loss: 3.1771

Epoch 14/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.7198 - fm/loss: 1.2961 - loss: 3.0159 - val_dm/loss: 1.0213 - val_fm/loss: 1.1112 - val_loss: 2.1325

Epoch 15/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3384 - fm/loss: 1.0748 - loss: 2.4132 - val_dm/loss: 0.6076 - val_fm/loss: 1.2300 - val_loss: 1.8376

Epoch 16/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.4902 - fm/loss: 0.9923 - loss: 3.4826 - val_dm/loss: 1.0754 - val_fm/loss: 0.9306 - val_loss: 2.0059

Epoch 17/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.7508 - fm/loss: 1.1791 - loss: 2.9300 - val_dm/loss: 1.7884 - val_fm/loss: 1.0864 - val_loss: 2.8747

Epoch 18/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.7521 - fm/loss: 1.5380 - loss: 4.2901 - val_dm/loss: 0.8132 - val_fm/loss: 0.9691 - val_loss: 1.7823

Epoch 19/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.5204 - fm/loss: 1.1015 - loss: 3.6219 - val_dm/loss: 5.9685 - val_fm/loss: 1.3702 - val_loss: 7.3387

Epoch 20/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.2424 - fm/loss: 0.9587 - loss: 2.2011 - val_dm/loss: 1.2309 - val_fm/loss: 1.3755 - val_loss: 2.6064

Epoch 21/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.1497 - fm/loss: 0.9750 - loss: 2.1247 - val_dm/loss: 0.4613 - val_fm/loss: 1.2584 - val_loss: 1.7196

Epoch 22/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3406 - fm/loss: 0.9391 - loss: 2.2797 - val_dm/loss: 1.5004 - val_fm/loss: 1.0767 - val_loss: 2.5771

Epoch 23/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.6855 - fm/loss: 1.1658 - loss: 3.8513 - val_dm/loss: 1.1586 - val_fm/loss: 0.9407 - val_loss: 2.0993

Epoch 24/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4030 - fm/loss: 0.9600 - loss: 2.3630 - val_dm/loss: 1.1531 - val_fm/loss: 0.6984 - val_loss: 1.8514

Epoch 25/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.2147 - fm/loss: 1.0042 - loss: 2.2189 - val_dm/loss: 1.2193 - val_fm/loss: 0.8242 - val_loss: 2.0435

Epoch 26/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.8627 - fm/loss: 1.0769 - loss: 2.9397 - val_dm/loss: 1.9970 - val_fm/loss: 1.3102 - val_loss: 3.3073

Epoch 27/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2830 - fm/loss: 1.0391 - loss: 2.3221 - val_dm/loss: 0.5818 - val_fm/loss: 1.4131 - val_loss: 1.9949

Epoch 28/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2169 - fm/loss: 1.0852 - loss: 2.3021 - val_dm/loss: 1.9724 - val_fm/loss: 0.6243 - val_loss: 2.5967

Epoch 29/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4123 - fm/loss: 1.2181 - loss: 2.6304 - val_dm/loss: 0.9759 - val_fm/loss: 0.5789 - val_loss: 1.5548

Epoch 30/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.5645 - fm/loss: 0.9049 - loss: 2.4693 - val_dm/loss: 0.8075 - val_fm/loss: 0.5208 - val_loss: 1.3284

Epoch 31/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2470 - fm/loss: 1.1346 - loss: 2.3816 - val_dm/loss: 0.9339 - val_fm/loss: 0.9090 - val_loss: 1.8429

Epoch 32/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 0.8711 - fm/loss: 0.9869 - loss: 1.8580 - val_dm/loss: 1.3887 - val_fm/loss: 1.4001 - val_loss: 2.7888

Epoch 33/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3843 - fm/loss: 1.0078 - loss: 2.3921 - val_dm/loss: 1.4710 - val_fm/loss: 1.0089 - val_loss: 2.4800

Epoch 34/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3248 - fm/loss: 1.0452 - loss: 2.3700 - val_dm/loss: 0.9531 - val_fm/loss: 1.4072 - val_loss: 2.3603

Epoch 35/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.6772 - fm/loss: 0.7777 - loss: 2.4549 - val_dm/loss: 0.7646 - val_fm/loss: 1.5408 - val_loss: 2.3054

Epoch 36/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.8991 - fm/loss: 0.8783 - loss: 2.7774 - val_dm/loss: 1.0359 - val_fm/loss: 0.9711 - val_loss: 2.0070

Epoch 37/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.7286 - fm/loss: 1.0939 - loss: 2.8225 - val_dm/loss: 0.8291 - val_fm/loss: 0.7067 - val_loss: 1.5358

Epoch 38/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1522 - fm/loss: 1.1983 - loss: 2.3505 - val_dm/loss: 1.0328 - val_fm/loss: 1.3207 - val_loss: 2.3535

Epoch 39/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0192 - fm/loss: 0.9553 - loss: 1.9744 - val_dm/loss: 0.7538 - val_fm/loss: 1.1618 - val_loss: 1.9156

Epoch 40/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.9864 - fm/loss: 1.1678 - loss: 3.1541 - val_dm/loss: 1.6572 - val_fm/loss: 1.1077 - val_loss: 2.7648

Epoch 41/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3787 - fm/loss: 1.0067 - loss: 2.3854 - val_dm/loss: 0.7075 - val_fm/loss: 1.5528 - val_loss: 2.2603

Epoch 42/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 0.9845 - fm/loss: 1.0878 - loss: 2.0723 - val_dm/loss: 0.5120 - val_fm/loss: 1.0159 - val_loss: 1.5279

Epoch 43/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.5369 - fm/loss: 0.8784 - loss: 2.4153 - val_dm/loss: 1.1055 - val_fm/loss: 1.0740 - val_loss: 2.1795

Epoch 44/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.8658 - fm/loss: 0.7835 - loss: 2.6492 - val_dm/loss: 17.6500 - val_fm/loss: 1.0507 - val_loss: 18.7007

Epoch 45/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4782 - fm/loss: 1.0621 - loss: 2.5404 - val_dm/loss: 0.8849 - val_fm/loss: 1.6042 - val_loss: 2.4891

Epoch 46/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3016 - fm/loss: 0.9973 - loss: 2.2989 - val_dm/loss: 0.8794 - val_fm/loss: 0.5485 - val_loss: 1.4278

Epoch 47/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4573 - fm/loss: 0.9211 - loss: 2.3784 - val_dm/loss: 0.8221 - val_fm/loss: 0.8728 - val_loss: 1.6949

Epoch 48/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3161 - fm/loss: 0.9386 - loss: 2.2547 - val_dm/loss: 0.5343 - val_fm/loss: 1.0888 - val_loss: 1.6231

Epoch 49/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 0.9794 - fm/loss: 1.0152 - loss: 1.9946 - val_dm/loss: 2.1683 - val_fm/loss: 0.9310 - val_loss: 3.0993

Epoch 50/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.6541 - fm/loss: 0.8851 - loss: 2.5392 - val_dm/loss: 1.0980 - val_fm/loss: 0.6004 - val_loss: 1.6985

Epoch 51/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 3.0539 - fm/loss: 0.8644 - loss: 3.9183 - val_dm/loss: 1.2712 - val_fm/loss: 0.9216 - val_loss: 2.1928

Epoch 52/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1531 - fm/loss: 0.8981 - loss: 2.0512 - val_dm/loss: 1.0406 - val_fm/loss: 0.6532 - val_loss: 1.6938

Epoch 53/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0613 - fm/loss: 0.7551 - loss: 1.8164 - val_dm/loss: 0.6847 - val_fm/loss: 1.4540 - val_loss: 2.1387

Epoch 54/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.2722 - fm/loss: 0.9301 - loss: 2.2023 - val_dm/loss: 0.7444 - val_fm/loss: 0.3624 - val_loss: 1.1068

Epoch 55/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2689 - fm/loss: 1.0471 - loss: 2.3160 - val_dm/loss: 1.4351 - val_fm/loss: 0.3480 - val_loss: 1.7831

Epoch 56/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1674 - fm/loss: 0.9778 - loss: 2.1453 - val_dm/loss: 1.1388 - val_fm/loss: 0.8385 - val_loss: 1.9773

Epoch 57/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0737 - fm/loss: 0.7602 - loss: 1.8340 - val_dm/loss: 0.9774 - val_fm/loss: 0.5813 - val_loss: 1.5587

Epoch 58/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.0739 - fm/loss: 0.9922 - loss: 3.0661 - val_dm/loss: 1.7128 - val_fm/loss: 1.4174 - val_loss: 3.1302

Epoch 59/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 16.5515 - fm/loss: 0.8951 - loss: 17.4466 - val_dm/loss: 0.8221 - val_fm/loss: 0.8770 - val_loss: 1.6991

Epoch 60/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4921 - fm/loss: 0.9490 - loss: 2.4411 - val_dm/loss: 0.5828 - val_fm/loss: 0.9435 - val_loss: 1.5263

Epoch 61/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.1491 - fm/loss: 1.0424 - loss: 2.1915 - val_dm/loss: 4.4262 - val_fm/loss: 1.2655 - val_loss: 5.6917

Epoch 62/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3474 - fm/loss: 0.7892 - loss: 2.1366 - val_dm/loss: 0.9303 - val_fm/loss: 1.2030 - val_loss: 2.1333

Epoch 63/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 0.8882 - fm/loss: 0.9493 - loss: 1.8375 - val_dm/loss: 1.1028 - val_fm/loss: 0.9205 - val_loss: 2.0233

Epoch 64/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3828 - fm/loss: 0.9000 - loss: 2.2828 - val_dm/loss: 1.2021 - val_fm/loss: 0.6948 - val_loss: 1.8970

Epoch 65/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.5516 - fm/loss: 1.1050 - loss: 2.6566 - val_dm/loss: 0.6603 - val_fm/loss: 1.1181 - val_loss: 1.7784

Epoch 66/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0622 - fm/loss: 1.1344 - loss: 2.1966 - val_dm/loss: 1.0017 - val_fm/loss: 0.8580 - val_loss: 1.8597

Epoch 67/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 3.6413 - fm/loss: 1.0104 - loss: 4.6517 - val_dm/loss: 1.8606 - val_fm/loss: 1.1641 - val_loss: 3.0248

Epoch 68/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3073 - fm/loss: 0.7661 - loss: 2.0734 - val_dm/loss: 1.3448 - val_fm/loss: 1.6907 - val_loss: 3.0355

Epoch 69/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2140 - fm/loss: 0.9194 - loss: 2.1334 - val_dm/loss: 0.6585 - val_fm/loss: 0.9613 - val_loss: 1.6198

Epoch 70/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0323 - fm/loss: 1.0889 - loss: 2.1212 - val_dm/loss: 1.2766 - val_fm/loss: 0.7261 - val_loss: 2.0026

Epoch 71/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4042 - fm/loss: 0.7889 - loss: 2.1931 - val_dm/loss: 1.2018 - val_fm/loss: 0.8850 - val_loss: 2.0867

Epoch 72/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.7203 - fm/loss: 0.9870 - loss: 2.7073 - val_dm/loss: 1.9133 - val_fm/loss: 0.6871 - val_loss: 2.6004

Epoch 73/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.2632 - fm/loss: 0.9604 - loss: 2.2235 - val_dm/loss: 1.3939 - val_fm/loss: 0.8452 - val_loss: 2.2391

Epoch 74/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3669 - fm/loss: 0.8729 - loss: 2.2398 - val_dm/loss: 9.2167 - val_fm/loss: 1.1324 - val_loss: 10.3492

Epoch 75/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.2330 - fm/loss: 0.8900 - loss: 2.1229 - val_dm/loss: 1.2148 - val_fm/loss: 2.3371 - val_loss: 3.5519

Epoch 76/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2003 - fm/loss: 0.7976 - loss: 1.9980 - val_dm/loss: 1.9335 - val_fm/loss: 1.1871 - val_loss: 3.1206

Epoch 77/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 0.9688 - fm/loss: 1.5656 - loss: 2.5344 - val_dm/loss: 1.2392 - val_fm/loss: 1.0152 - val_loss: 2.2544

Epoch 78/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.0199 - fm/loss: 1.1159 - loss: 2.1358 - val_dm/loss: 1.0344 - val_fm/loss: 0.9976 - val_loss: 2.0320

Epoch 79/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1766 - fm/loss: 0.7954 - loss: 1.9720 - val_dm/loss: 1.3678 - val_fm/loss: 0.7602 - val_loss: 2.1280

Epoch 80/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0165 - fm/loss: 0.9948 - loss: 2.0113 - val_dm/loss: 0.9656 - val_fm/loss: 0.7521 - val_loss: 1.7178

Epoch 81/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3309 - fm/loss: 1.0182 - loss: 2.3491 - val_dm/loss: 1.0725 - val_fm/loss: 0.8513 - val_loss: 1.9237

Epoch 82/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2909 - fm/loss: 0.9920 - loss: 2.2828 - val_dm/loss: 0.9036 - val_fm/loss: 0.7802 - val_loss: 1.6837

Epoch 83/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 2.6637 - fm/loss: 0.9579 - loss: 3.6216 - val_dm/loss: 0.7546 - val_fm/loss: 1.1265 - val_loss: 1.8811

Epoch 84/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.1662 - fm/loss: 0.8902 - loss: 2.0563 - val_dm/loss: 1.2328 - val_fm/loss: 1.5100 - val_loss: 2.7428

Epoch 85/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.2541 - fm/loss: 0.6972 - loss: 1.9513 - val_dm/loss: 1.1820 - val_fm/loss: 1.5830 - val_loss: 2.7650

Epoch 86/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1380 - fm/loss: 0.8086 - loss: 1.9466 - val_dm/loss: 1.0152 - val_fm/loss: 0.4375 - val_loss: 1.4527

Epoch 87/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.4684 - fm/loss: 0.8278 - loss: 2.2961 - val_dm/loss: 2.5808 - val_fm/loss: 0.8665 - val_loss: 3.4473

Epoch 88/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1240 - fm/loss: 1.0226 - loss: 2.1466 - val_dm/loss: 1.0629 - val_fm/loss: 0.5699 - val_loss: 1.6328

Epoch 89/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 2.7106 - fm/loss: 0.7082 - loss: 3.4188 - val_dm/loss: 0.7865 - val_fm/loss: 0.4207 - val_loss: 1.2072

Epoch 90/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0646 - fm/loss: 0.8721 - loss: 1.9367 - val_dm/loss: 1.3729 - val_fm/loss: 1.3483 - val_loss: 2.7212

Epoch 91/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.5327 - fm/loss: 0.8088 - loss: 2.3415 - val_dm/loss: 0.8775 - val_fm/loss: 1.1028 - val_loss: 1.9803

Epoch 92/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 4.7501 - fm/loss: 0.8155 - loss: 5.5656 - val_dm/loss: 0.5379 - val_fm/loss: 1.5103 - val_loss: 2.0483

Epoch 93/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.0911 - fm/loss: 0.9258 - loss: 2.0169 - val_dm/loss: 1.1647 - val_fm/loss: 1.2470 - val_loss: 2.4117

Epoch 94/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1080 - fm/loss: 0.9333 - loss: 2.0413 - val_dm/loss: 1.1916 - val_fm/loss: 1.1387 - val_loss: 2.3303

Epoch 95/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3476 - fm/loss: 0.8922 - loss: 2.2398 - val_dm/loss: 0.5669 - val_fm/loss: 1.0731 - val_loss: 1.6399

Epoch 96/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.3392 - fm/loss: 0.8219 - loss: 2.1610 - val_dm/loss: 0.7377 - val_fm/loss: 0.9515 - val_loss: 1.6892

Epoch 97/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.1675 - fm/loss: 0.9758 - loss: 2.1433 - val_dm/loss: 0.4416 - val_fm/loss: 0.5975 - val_loss: 1.0391

Epoch 98/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 2ms/step - dm/loss: 1.7841 - fm/loss: 0.9877 - loss: 2.7717 - val_dm/loss: 0.8066 - val_fm/loss: 1.3596 - val_loss: 2.1662

Epoch 99/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.9080 - fm/loss: 0.9525 - loss: 2.8604 - val_dm/loss: 1.4704 - val_fm/loss: 0.8391 - val_loss: 2.3095

Epoch 100/100

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 3ms/step - dm/loss: 1.6514 - fm/loss: 0.9556 - loss: 2.6070 - val_dm/loss: 0.4518 - val_fm/loss: 0.5444 - val_loss: 0.9962
INFO:bayesflow:Training completed in 15.66 seconds.
# Obtain posterior draws from all ensemble members
marginal_draws = workflow.sample(
    conditions=test_data,
    batch_size=25,
    num_samples=300,
    merge_members=False
)
WARNING:bayesflow:JAX backend needs to preallocate random samples for 'max_steps=1000'.
WARNING:bayesflow:JAX backend needs to preallocate random samples for 'max_steps=1000'.
WARNING:bayesflow:JAX backend needs to preallocate random samples for 'max_steps=1000'.
WARNING:bayesflow:JAX backend needs to preallocate random samples for 'max_steps=1000'.
INFO:bayesflow:Sampling completed in 32.16 seconds.

Why merge_members=False? By default, EnsembleWorkflow.sample() pools draws from all members into a single sample. Setting merge_members=False returns a dict keyed by member name, so we can inspect each member’s recovery performance individually and diagnose which estimator contributes most (or poorly).

for member, samples in marginal_draws.items():
    f = bf.diagnostics.recovery(samples, test_data, variable_names=param_names)
    f.suptitle(f"Recovery - Ensemble Member {member.upper()}")

Adding Point Estimators to the mix

workflow = bf.EnsembleWorkflow(
    inference_networks={
        "fm": bf.networks.FlowMatching(subnet_kwargs={"widths": (128,)*3}),
        "dm": bf.networks.DiffusionModel(subnet_kwargs={"widths": (128,)*3}),
        "qt": bf.networks.ScoringRuleNetwork(
            quantiles=bf.scoring_rules.QuantileScore(np.linspace(0.1,0.9,5)),
        )
    },
    inference_variables=param_names,
    inference_conditions="summary_stats",
    standardize="all"
)

history = workflow.fit_offline(train_data, batch_size=32, epochs=200, validation_data=test_data)
INFO:bayesflow:EnsembleIndexedDataset: ensemble_size=3, batch_size=32, num_samples=1000, data_reuse=1.0 -> reduction_factor=1.00, window_size=1000, steps_per_epoch=32. Overlap is enforced at the subdataset level (member-specific windows into the global index pool).
INFO:bayesflow:Fitting on dataset instance of EnsembleDataset.
INFO:bayesflow:Building on a test batch.
Epoch 1/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 7s 131ms/step - dm/loss: 2.6307 - fm/loss: 2.9853 - loss: 6.1702 - qt/ScoringRuleNetwork/quantiles: 0.5542 - qt/loss: 0.5542 - val_dm/loss: 1.9800 - val_fm/loss: 2.2685 - val_loss: 4.7464 - val_qt/ScoringRuleNetwork/quantiles: 0.4979 - val_qt/loss: 0.4979

Epoch 2/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.3626 - fm/loss: 2.2608 - loss: 5.0501 - qt/ScoringRuleNetwork/quantiles: 0.4268 - qt/loss: 0.4268 - val_dm/loss: 1.6676 - val_fm/loss: 1.5307 - val_loss: 3.4876 - val_qt/ScoringRuleNetwork/quantiles: 0.2893 - val_qt/loss: 0.2893

Epoch 3/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6822 - fm/loss: 1.8644 - loss: 3.8553 - qt/ScoringRuleNetwork/quantiles: 0.3087 - qt/loss: 0.3087 - val_dm/loss: 1.6884 - val_fm/loss: 2.4660 - val_loss: 4.3911 - val_qt/ScoringRuleNetwork/quantiles: 0.2367 - val_qt/loss: 0.2367

Epoch 4/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.5518 - fm/loss: 1.7416 - loss: 3.6161 - qt/ScoringRuleNetwork/quantiles: 0.3226 - qt/loss: 0.3226 - val_dm/loss: 1.4081 - val_fm/loss: 2.0006 - val_loss: 3.6092 - val_qt/ScoringRuleNetwork/quantiles: 0.2005 - val_qt/loss: 0.2005

Epoch 5/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 2.8184 - fm/loss: 1.2495 - loss: 4.3744 - qt/ScoringRuleNetwork/quantiles: 0.3065 - qt/loss: 0.3065 - val_dm/loss: 1.2517 - val_fm/loss: 1.0753 - val_loss: 2.5263 - val_qt/ScoringRuleNetwork/quantiles: 0.1993 - val_qt/loss: 0.1993

Epoch 6/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6851 - fm/loss: 1.5090 - loss: 3.4685 - qt/ScoringRuleNetwork/quantiles: 0.2744 - qt/loss: 0.2744 - val_dm/loss: 1.2300 - val_fm/loss: 1.3932 - val_loss: 2.8171 - val_qt/ScoringRuleNetwork/quantiles: 0.1939 - val_qt/loss: 0.1939

Epoch 7/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2377 - fm/loss: 1.2286 - loss: 2.7011 - qt/ScoringRuleNetwork/quantiles: 0.2348 - qt/loss: 0.2348 - val_dm/loss: 1.0336 - val_fm/loss: 0.8119 - val_loss: 2.0240 - val_qt/ScoringRuleNetwork/quantiles: 0.1785 - val_qt/loss: 0.1785

Epoch 8/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3778 - fm/loss: 1.3865 - loss: 3.0358 - qt/ScoringRuleNetwork/quantiles: 0.2715 - qt/loss: 0.2715 - val_dm/loss: 0.9412 - val_fm/loss: 1.3967 - val_loss: 2.5415 - val_qt/ScoringRuleNetwork/quantiles: 0.2036 - val_qt/loss: 0.2036

Epoch 9/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.8325 - fm/loss: 1.4101 - loss: 3.4972 - qt/ScoringRuleNetwork/quantiles: 0.2546 - qt/loss: 0.2546 - val_dm/loss: 0.9738 - val_fm/loss: 1.4718 - val_loss: 2.6306 - val_qt/ScoringRuleNetwork/quantiles: 0.1849 - val_qt/loss: 0.1849

Epoch 10/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0529 - fm/loss: 1.1619 - loss: 2.4895 - qt/ScoringRuleNetwork/quantiles: 0.2747 - qt/loss: 0.2747 - val_dm/loss: 1.8788 - val_fm/loss: 0.6409 - val_loss: 2.6899 - val_qt/ScoringRuleNetwork/quantiles: 0.1702 - val_qt/loss: 0.1702

Epoch 11/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.6166 - fm/loss: 1.3464 - loss: 4.2078 - qt/ScoringRuleNetwork/quantiles: 0.2447 - qt/loss: 0.2447 - val_dm/loss: 1.9747 - val_fm/loss: 1.7731 - val_loss: 4.2863 - val_qt/ScoringRuleNetwork/quantiles: 0.5385 - val_qt/loss: 0.5385

Epoch 12/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1605 - fm/loss: 1.2937 - loss: 2.6454 - qt/ScoringRuleNetwork/quantiles: 0.1911 - qt/loss: 0.1911 - val_dm/loss: 1.0770 - val_fm/loss: 0.7164 - val_loss: 1.9493 - val_qt/ScoringRuleNetwork/quantiles: 0.1559 - val_qt/loss: 0.1559

Epoch 13/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0664 - fm/loss: 1.0004 - loss: 2.2775 - qt/ScoringRuleNetwork/quantiles: 0.2107 - qt/loss: 0.2107 - val_dm/loss: 1.3893 - val_fm/loss: 1.4302 - val_loss: 3.0477 - val_qt/ScoringRuleNetwork/quantiles: 0.2282 - val_qt/loss: 0.2282

Epoch 14/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.7802 - fm/loss: 0.8730 - loss: 3.8469 - qt/ScoringRuleNetwork/quantiles: 0.1938 - qt/loss: 0.1938 - val_dm/loss: 1.7170 - val_fm/loss: 0.6177 - val_loss: 2.5370 - val_qt/ScoringRuleNetwork/quantiles: 0.2023 - val_qt/loss: 0.2023

Epoch 15/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6616 - fm/loss: 1.0546 - loss: 2.9289 - qt/ScoringRuleNetwork/quantiles: 0.2127 - qt/loss: 0.2127 - val_dm/loss: 0.7027 - val_fm/loss: 1.5736 - val_loss: 2.4832 - val_qt/ScoringRuleNetwork/quantiles: 0.2068 - val_qt/loss: 0.2068

Epoch 16/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2981 - fm/loss: 1.1980 - loss: 2.7589 - qt/ScoringRuleNetwork/quantiles: 0.2629 - qt/loss: 0.2629 - val_dm/loss: 2.8712 - val_fm/loss: 0.7155 - val_loss: 3.7931 - val_qt/ScoringRuleNetwork/quantiles: 0.2064 - val_qt/loss: 0.2064

Epoch 17/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3173 - fm/loss: 1.1603 - loss: 2.6762 - qt/ScoringRuleNetwork/quantiles: 0.1985 - qt/loss: 0.1985 - val_dm/loss: 0.5763 - val_fm/loss: 1.0716 - val_loss: 1.7774 - val_qt/ScoringRuleNetwork/quantiles: 0.1294 - val_qt/loss: 0.1294

Epoch 18/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.8383 - fm/loss: 0.8210 - loss: 2.8426 - qt/ScoringRuleNetwork/quantiles: 0.1834 - qt/loss: 0.1834 - val_dm/loss: 0.4717 - val_fm/loss: 0.9329 - val_loss: 1.5752 - val_qt/ScoringRuleNetwork/quantiles: 0.1706 - val_qt/loss: 0.1706

Epoch 19/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.3131 - fm/loss: 0.9852 - loss: 2.5732 - qt/ScoringRuleNetwork/quantiles: 0.2749 - qt/loss: 0.2749 - val_dm/loss: 1.7119 - val_fm/loss: 0.7232 - val_loss: 2.5840 - val_qt/ScoringRuleNetwork/quantiles: 0.1488 - val_qt/loss: 0.1488

Epoch 20/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.5430 - fm/loss: 0.9883 - loss: 2.7218 - qt/ScoringRuleNetwork/quantiles: 0.1906 - qt/loss: 0.1906 - val_dm/loss: 1.4898 - val_fm/loss: 1.0731 - val_loss: 2.7812 - val_qt/ScoringRuleNetwork/quantiles: 0.2183 - val_qt/loss: 0.2183

Epoch 21/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.4404 - fm/loss: 1.0949 - loss: 2.7328 - qt/ScoringRuleNetwork/quantiles: 0.1975 - qt/loss: 0.1975 - val_dm/loss: 1.1572 - val_fm/loss: 1.1549 - val_loss: 2.5571 - val_qt/ScoringRuleNetwork/quantiles: 0.2450 - val_qt/loss: 0.2450

Epoch 22/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4239 - fm/loss: 1.1049 - loss: 2.7342 - qt/ScoringRuleNetwork/quantiles: 0.2054 - qt/loss: 0.2054 - val_dm/loss: 0.8599 - val_fm/loss: 0.6814 - val_loss: 1.7011 - val_qt/ScoringRuleNetwork/quantiles: 0.1598 - val_qt/loss: 0.1598

Epoch 23/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2416 - fm/loss: 1.0932 - loss: 2.5435 - qt/ScoringRuleNetwork/quantiles: 0.2086 - qt/loss: 0.2086 - val_dm/loss: 0.8690 - val_fm/loss: 1.0601 - val_loss: 2.0797 - val_qt/ScoringRuleNetwork/quantiles: 0.1506 - val_qt/loss: 0.1506

Epoch 24/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.2199 - fm/loss: 0.7596 - loss: 3.1451 - qt/ScoringRuleNetwork/quantiles: 0.1656 - qt/loss: 0.1656 - val_dm/loss: 1.4607 - val_fm/loss: 0.6079 - val_loss: 2.2008 - val_qt/ScoringRuleNetwork/quantiles: 0.1322 - val_qt/loss: 0.1322

Epoch 25/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0166 - fm/loss: 0.7805 - loss: 1.9843 - qt/ScoringRuleNetwork/quantiles: 0.1872 - qt/loss: 0.1872 - val_dm/loss: 1.2854 - val_fm/loss: 0.6739 - val_loss: 2.0988 - val_qt/ScoringRuleNetwork/quantiles: 0.1395 - val_qt/loss: 0.1395

Epoch 26/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2779 - fm/loss: 0.9269 - loss: 2.3986 - qt/ScoringRuleNetwork/quantiles: 0.1938 - qt/loss: 0.1938 - val_dm/loss: 2.3058 - val_fm/loss: 0.7993 - val_loss: 3.3779 - val_qt/ScoringRuleNetwork/quantiles: 0.2729 - val_qt/loss: 0.2729

Epoch 27/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2040 - fm/loss: 1.0397 - loss: 2.4616 - qt/ScoringRuleNetwork/quantiles: 0.2180 - qt/loss: 0.2180 - val_dm/loss: 1.1303 - val_fm/loss: 1.3645 - val_loss: 2.6787 - val_qt/ScoringRuleNetwork/quantiles: 0.1840 - val_qt/loss: 0.1840

Epoch 28/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.0884 - fm/loss: 0.9528 - loss: 3.2240 - qt/ScoringRuleNetwork/quantiles: 0.1827 - qt/loss: 0.1827 - val_dm/loss: 1.7570 - val_fm/loss: 0.6916 - val_loss: 2.6082 - val_qt/ScoringRuleNetwork/quantiles: 0.1596 - val_qt/loss: 0.1596

Epoch 29/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.4628 - fm/loss: 0.9529 - loss: 3.6012 - qt/ScoringRuleNetwork/quantiles: 0.1856 - qt/loss: 0.1856 - val_dm/loss: 0.9315 - val_fm/loss: 0.7722 - val_loss: 1.9398 - val_qt/ScoringRuleNetwork/quantiles: 0.2360 - val_qt/loss: 0.2360

Epoch 30/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0012 - fm/loss: 0.9912 - loss: 2.1824 - qt/ScoringRuleNetwork/quantiles: 0.1900 - qt/loss: 0.1900 - val_dm/loss: 0.8796 - val_fm/loss: 0.5124 - val_loss: 1.5762 - val_qt/ScoringRuleNetwork/quantiles: 0.1842 - val_qt/loss: 0.1842

Epoch 31/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0755 - fm/loss: 0.9929 - loss: 2.2444 - qt/ScoringRuleNetwork/quantiles: 0.1761 - qt/loss: 0.1761 - val_dm/loss: 1.0225 - val_fm/loss: 0.8813 - val_loss: 2.1537 - val_qt/ScoringRuleNetwork/quantiles: 0.2499 - val_qt/loss: 0.2499

Epoch 32/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.2854 - fm/loss: 0.9273 - loss: 2.3762 - qt/ScoringRuleNetwork/quantiles: 0.1635 - qt/loss: 0.1635 - val_dm/loss: 0.8765 - val_fm/loss: 0.9846 - val_loss: 2.0292 - val_qt/ScoringRuleNetwork/quantiles: 0.1681 - val_qt/loss: 0.1681

Epoch 33/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.5829 - fm/loss: 0.7974 - loss: 2.5663 - qt/ScoringRuleNetwork/quantiles: 0.1860 - qt/loss: 0.1860 - val_dm/loss: 0.6899 - val_fm/loss: 0.5927 - val_loss: 1.4493 - val_qt/ScoringRuleNetwork/quantiles: 0.1667 - val_qt/loss: 0.1667

Epoch 34/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0505 - fm/loss: 0.8806 - loss: 2.1034 - qt/ScoringRuleNetwork/quantiles: 0.1723 - qt/loss: 0.1723 - val_dm/loss: 1.1792 - val_fm/loss: 1.3813 - val_loss: 2.7981 - val_qt/ScoringRuleNetwork/quantiles: 0.2375 - val_qt/loss: 0.2375

Epoch 35/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0638 - fm/loss: 1.1069 - loss: 2.3440 - qt/ScoringRuleNetwork/quantiles: 0.1733 - qt/loss: 0.1733 - val_dm/loss: 6.6388 - val_fm/loss: 0.5704 - val_loss: 7.3662 - val_qt/ScoringRuleNetwork/quantiles: 0.1570 - val_qt/loss: 0.1570

Epoch 36/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0366 - fm/loss: 0.7288 - loss: 1.9089 - qt/ScoringRuleNetwork/quantiles: 0.1435 - qt/loss: 0.1435 - val_dm/loss: 1.2923 - val_fm/loss: 1.1335 - val_loss: 2.6040 - val_qt/ScoringRuleNetwork/quantiles: 0.1782 - val_qt/loss: 0.1782

Epoch 37/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1707 - fm/loss: 1.1297 - loss: 2.4754 - qt/ScoringRuleNetwork/quantiles: 0.1750 - qt/loss: 0.1750 - val_dm/loss: 0.7372 - val_fm/loss: 0.9403 - val_loss: 1.8600 - val_qt/ScoringRuleNetwork/quantiles: 0.1826 - val_qt/loss: 0.1826

Epoch 38/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3915 - fm/loss: 0.8301 - loss: 2.3825 - qt/ScoringRuleNetwork/quantiles: 0.1609 - qt/loss: 0.1609 - val_dm/loss: 3.4053 - val_fm/loss: 0.6250 - val_loss: 4.2022 - val_qt/ScoringRuleNetwork/quantiles: 0.1718 - val_qt/loss: 0.1718

Epoch 39/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 7.1400 - fm/loss: 0.9648 - loss: 8.2670 - qt/ScoringRuleNetwork/quantiles: 0.1623 - qt/loss: 0.1623 - val_dm/loss: 0.8602 - val_fm/loss: 0.7563 - val_loss: 1.8485 - val_qt/ScoringRuleNetwork/quantiles: 0.2319 - val_qt/loss: 0.2319

Epoch 40/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.1089 - fm/loss: 0.8436 - loss: 3.1151 - qt/ScoringRuleNetwork/quantiles: 0.1626 - qt/loss: 0.1626 - val_dm/loss: 1.5006 - val_fm/loss: 1.3422 - val_loss: 3.0139 - val_qt/ScoringRuleNetwork/quantiles: 0.1711 - val_qt/loss: 0.1711

Epoch 41/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.9709 - fm/loss: 0.8894 - loss: 2.0358 - qt/ScoringRuleNetwork/quantiles: 0.1755 - qt/loss: 0.1755 - val_dm/loss: 0.8170 - val_fm/loss: 1.0416 - val_loss: 2.0115 - val_qt/ScoringRuleNetwork/quantiles: 0.1528 - val_qt/loss: 0.1528

Epoch 42/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0348 - fm/loss: 0.9425 - loss: 2.1316 - qt/ScoringRuleNetwork/quantiles: 0.1543 - qt/loss: 0.1543 - val_dm/loss: 0.6864 - val_fm/loss: 0.7283 - val_loss: 1.6045 - val_qt/ScoringRuleNetwork/quantiles: 0.1898 - val_qt/loss: 0.1898

Epoch 43/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 3.4438 - fm/loss: 0.7347 - loss: 4.3277 - qt/ScoringRuleNetwork/quantiles: 0.1492 - qt/loss: 0.1492 - val_dm/loss: 1.6740 - val_fm/loss: 0.9080 - val_loss: 2.7731 - val_qt/ScoringRuleNetwork/quantiles: 0.1911 - val_qt/loss: 0.1911

Epoch 44/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.9629 - fm/loss: 0.8134 - loss: 3.9471 - qt/ScoringRuleNetwork/quantiles: 0.1707 - qt/loss: 0.1707 - val_dm/loss: 2.8576 - val_fm/loss: 1.1336 - val_loss: 4.1497 - val_qt/ScoringRuleNetwork/quantiles: 0.1585 - val_qt/loss: 0.1585

Epoch 45/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1526 - fm/loss: 1.0421 - loss: 2.3565 - qt/ScoringRuleNetwork/quantiles: 0.1618 - qt/loss: 0.1618 - val_dm/loss: 1.0632 - val_fm/loss: 0.7181 - val_loss: 1.9637 - val_qt/ScoringRuleNetwork/quantiles: 0.1825 - val_qt/loss: 0.1825

Epoch 46/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0948 - fm/loss: 0.8971 - loss: 2.1630 - qt/ScoringRuleNetwork/quantiles: 0.1711 - qt/loss: 0.1711 - val_dm/loss: 0.7497 - val_fm/loss: 0.7064 - val_loss: 1.6245 - val_qt/ScoringRuleNetwork/quantiles: 0.1684 - val_qt/loss: 0.1684

Epoch 47/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1712 - fm/loss: 1.0862 - loss: 2.4203 - qt/ScoringRuleNetwork/quantiles: 0.1629 - qt/loss: 0.1629 - val_dm/loss: 7.1259 - val_fm/loss: 1.7105 - val_loss: 9.0430 - val_qt/ScoringRuleNetwork/quantiles: 0.2066 - val_qt/loss: 0.2066

Epoch 48/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4089 - fm/loss: 0.8754 - loss: 2.4494 - qt/ScoringRuleNetwork/quantiles: 0.1652 - qt/loss: 0.1652 - val_dm/loss: 0.5934 - val_fm/loss: 0.5000 - val_loss: 1.2920 - val_qt/ScoringRuleNetwork/quantiles: 0.1986 - val_qt/loss: 0.1986

Epoch 49/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4451 - fm/loss: 0.8851 - loss: 2.5172 - qt/ScoringRuleNetwork/quantiles: 0.1870 - qt/loss: 0.1870 - val_dm/loss: 0.7466 - val_fm/loss: 1.3544 - val_loss: 2.3155 - val_qt/ScoringRuleNetwork/quantiles: 0.2145 - val_qt/loss: 0.2145

Epoch 50/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3314 - fm/loss: 0.9075 - loss: 2.4066 - qt/ScoringRuleNetwork/quantiles: 0.1677 - qt/loss: 0.1677 - val_dm/loss: 0.5820 - val_fm/loss: 1.7108 - val_loss: 2.4947 - val_qt/ScoringRuleNetwork/quantiles: 0.2019 - val_qt/loss: 0.2019

Epoch 51/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1818 - fm/loss: 1.0552 - loss: 2.3941 - qt/ScoringRuleNetwork/quantiles: 0.1571 - qt/loss: 0.1571 - val_dm/loss: 1.3145 - val_fm/loss: 1.1779 - val_loss: 2.7333 - val_qt/ScoringRuleNetwork/quantiles: 0.2409 - val_qt/loss: 0.2409

Epoch 52/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6117 - fm/loss: 1.1186 - loss: 2.8962 - qt/ScoringRuleNetwork/quantiles: 0.1660 - qt/loss: 0.1660 - val_dm/loss: 0.8716 - val_fm/loss: 0.5739 - val_loss: 1.6133 - val_qt/ScoringRuleNetwork/quantiles: 0.1677 - val_qt/loss: 0.1677

Epoch 53/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3085 - fm/loss: 0.9663 - loss: 2.4336 - qt/ScoringRuleNetwork/quantiles: 0.1587 - qt/loss: 0.1587 - val_dm/loss: 1.6004 - val_fm/loss: 1.7441 - val_loss: 3.5447 - val_qt/ScoringRuleNetwork/quantiles: 0.2002 - val_qt/loss: 0.2002

Epoch 54/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6851 - fm/loss: 1.0094 - loss: 2.8817 - qt/ScoringRuleNetwork/quantiles: 0.1872 - qt/loss: 0.1872 - val_dm/loss: 1.4212 - val_fm/loss: 2.4053 - val_loss: 4.0016 - val_qt/ScoringRuleNetwork/quantiles: 0.1751 - val_qt/loss: 0.1751

Epoch 55/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6518 - fm/loss: 0.6774 - loss: 2.4956 - qt/ScoringRuleNetwork/quantiles: 0.1664 - qt/loss: 0.1664 - val_dm/loss: 1.9979 - val_fm/loss: 0.4171 - val_loss: 2.5980 - val_qt/ScoringRuleNetwork/quantiles: 0.1830 - val_qt/loss: 0.1830

Epoch 56/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.5390 - fm/loss: 0.8962 - loss: 2.5956 - qt/ScoringRuleNetwork/quantiles: 0.1603 - qt/loss: 0.1603 - val_dm/loss: 0.6212 - val_fm/loss: 1.2168 - val_loss: 2.0277 - val_qt/ScoringRuleNetwork/quantiles: 0.1896 - val_qt/loss: 0.1896

Epoch 57/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1512 - fm/loss: 0.8727 - loss: 2.1944 - qt/ScoringRuleNetwork/quantiles: 0.1706 - qt/loss: 0.1706 - val_dm/loss: 1.0399 - val_fm/loss: 0.6570 - val_loss: 1.8434 - val_qt/ScoringRuleNetwork/quantiles: 0.1465 - val_qt/loss: 0.1465

Epoch 58/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1041 - fm/loss: 0.6714 - loss: 1.9228 - qt/ScoringRuleNetwork/quantiles: 0.1472 - qt/loss: 0.1472 - val_dm/loss: 1.1272 - val_fm/loss: 0.7760 - val_loss: 2.1016 - val_qt/ScoringRuleNetwork/quantiles: 0.1984 - val_qt/loss: 0.1984

Epoch 59/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.8185 - fm/loss: 0.7971 - loss: 2.8006 - qt/ScoringRuleNetwork/quantiles: 0.1851 - qt/loss: 0.1851 - val_dm/loss: 1.1288 - val_fm/loss: 0.8896 - val_loss: 2.2903 - val_qt/ScoringRuleNetwork/quantiles: 0.2719 - val_qt/loss: 0.2719

Epoch 60/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.9091 - fm/loss: 0.8099 - loss: 1.8799 - qt/ScoringRuleNetwork/quantiles: 0.1609 - qt/loss: 0.1609 - val_dm/loss: 0.8468 - val_fm/loss: 0.6975 - val_loss: 1.7438 - val_qt/ScoringRuleNetwork/quantiles: 0.1995 - val_qt/loss: 0.1995

Epoch 61/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1090 - fm/loss: 0.8002 - loss: 2.0675 - qt/ScoringRuleNetwork/quantiles: 0.1582 - qt/loss: 0.1582 - val_dm/loss: 0.6991 - val_fm/loss: 0.6803 - val_loss: 1.5346 - val_qt/ScoringRuleNetwork/quantiles: 0.1552 - val_qt/loss: 0.1552

Epoch 62/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3014 - fm/loss: 1.0206 - loss: 2.5478 - qt/ScoringRuleNetwork/quantiles: 0.2258 - qt/loss: 0.2258 - val_dm/loss: 1.1048 - val_fm/loss: 1.4101 - val_loss: 2.6627 - val_qt/ScoringRuleNetwork/quantiles: 0.1478 - val_qt/loss: 0.1478

Epoch 63/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4329 - fm/loss: 0.6477 - loss: 2.2387 - qt/ScoringRuleNetwork/quantiles: 0.1582 - qt/loss: 0.1582 - val_dm/loss: 0.6673 - val_fm/loss: 1.0251 - val_loss: 1.8231 - val_qt/ScoringRuleNetwork/quantiles: 0.1306 - val_qt/loss: 0.1306

Epoch 64/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2874 - fm/loss: 1.0278 - loss: 2.4695 - qt/ScoringRuleNetwork/quantiles: 0.1544 - qt/loss: 0.1544 - val_dm/loss: 16.6690 - val_fm/loss: 0.5101 - val_loss: 17.2880 - val_qt/ScoringRuleNetwork/quantiles: 0.1088 - val_qt/loss: 0.1088

Epoch 65/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1674 - fm/loss: 1.0112 - loss: 2.3452 - qt/ScoringRuleNetwork/quantiles: 0.1666 - qt/loss: 0.1666 - val_dm/loss: 1.1096 - val_fm/loss: 0.9013 - val_loss: 2.1727 - val_qt/ScoringRuleNetwork/quantiles: 0.1618 - val_qt/loss: 0.1618

Epoch 66/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2191 - fm/loss: 0.8647 - loss: 2.2423 - qt/ScoringRuleNetwork/quantiles: 0.1585 - qt/loss: 0.1585 - val_dm/loss: 0.6690 - val_fm/loss: 1.1900 - val_loss: 2.0585 - val_qt/ScoringRuleNetwork/quantiles: 0.1995 - val_qt/loss: 0.1995

Epoch 67/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1496 - fm/loss: 0.8093 - loss: 2.1058 - qt/ScoringRuleNetwork/quantiles: 0.1469 - qt/loss: 0.1469 - val_dm/loss: 0.8496 - val_fm/loss: 1.2305 - val_loss: 2.2266 - val_qt/ScoringRuleNetwork/quantiles: 0.1466 - val_qt/loss: 0.1466

Epoch 68/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1881 - fm/loss: 0.8286 - loss: 2.1803 - qt/ScoringRuleNetwork/quantiles: 0.1636 - qt/loss: 0.1636 - val_dm/loss: 1.7084 - val_fm/loss: 0.7661 - val_loss: 2.6120 - val_qt/ScoringRuleNetwork/quantiles: 0.1376 - val_qt/loss: 0.1376

Epoch 69/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2499 - fm/loss: 0.8177 - loss: 2.2171 - qt/ScoringRuleNetwork/quantiles: 0.1495 - qt/loss: 0.1495 - val_dm/loss: 1.1692 - val_fm/loss: 0.9699 - val_loss: 2.3471 - val_qt/ScoringRuleNetwork/quantiles: 0.2080 - val_qt/loss: 0.2080

Epoch 70/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0847 - fm/loss: 0.9129 - loss: 2.1460 - qt/ScoringRuleNetwork/quantiles: 0.1484 - qt/loss: 0.1484 - val_dm/loss: 1.1370 - val_fm/loss: 1.1292 - val_loss: 2.4207 - val_qt/ScoringRuleNetwork/quantiles: 0.1545 - val_qt/loss: 0.1545

Epoch 71/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0596 - fm/loss: 1.0180 - loss: 2.2431 - qt/ScoringRuleNetwork/quantiles: 0.1656 - qt/loss: 0.1656 - val_dm/loss: 0.5551 - val_fm/loss: 0.9637 - val_loss: 1.7601 - val_qt/ScoringRuleNetwork/quantiles: 0.2413 - val_qt/loss: 0.2413

Epoch 72/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0581 - fm/loss: 0.7845 - loss: 2.0031 - qt/ScoringRuleNetwork/quantiles: 0.1606 - qt/loss: 0.1606 - val_dm/loss: 1.2386 - val_fm/loss: 0.8318 - val_loss: 2.2369 - val_qt/ScoringRuleNetwork/quantiles: 0.1665 - val_qt/loss: 0.1665

Epoch 73/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3060 - fm/loss: 0.8712 - loss: 2.3348 - qt/ScoringRuleNetwork/quantiles: 0.1576 - qt/loss: 0.1576 - val_dm/loss: 0.7742 - val_fm/loss: 0.6631 - val_loss: 1.5936 - val_qt/ScoringRuleNetwork/quantiles: 0.1563 - val_qt/loss: 0.1563

Epoch 74/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1491 - fm/loss: 0.7732 - loss: 2.0763 - qt/ScoringRuleNetwork/quantiles: 0.1540 - qt/loss: 0.1540 - val_dm/loss: 0.5555 - val_fm/loss: 0.6541 - val_loss: 1.3741 - val_qt/ScoringRuleNetwork/quantiles: 0.1645 - val_qt/loss: 0.1645

Epoch 75/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 2.2303 - fm/loss: 0.8127 - loss: 3.2114 - qt/ScoringRuleNetwork/quantiles: 0.1684 - qt/loss: 0.1684 - val_dm/loss: 1.7191 - val_fm/loss: 0.6526 - val_loss: 2.5490 - val_qt/ScoringRuleNetwork/quantiles: 0.1772 - val_qt/loss: 0.1772

Epoch 76/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9574 - fm/loss: 0.9154 - loss: 2.0360 - qt/ScoringRuleNetwork/quantiles: 0.1631 - qt/loss: 0.1631 - val_dm/loss: 0.8920 - val_fm/loss: 0.6628 - val_loss: 1.7221 - val_qt/ScoringRuleNetwork/quantiles: 0.1673 - val_qt/loss: 0.1673

Epoch 77/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9359 - fm/loss: 0.5872 - loss: 1.6656 - qt/ScoringRuleNetwork/quantiles: 0.1425 - qt/loss: 0.1425 - val_dm/loss: 1.1868 - val_fm/loss: 0.7832 - val_loss: 2.1919 - val_qt/ScoringRuleNetwork/quantiles: 0.2218 - val_qt/loss: 0.2218

Epoch 78/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0326 - fm/loss: 0.6861 - loss: 1.8742 - qt/ScoringRuleNetwork/quantiles: 0.1555 - qt/loss: 0.1555 - val_dm/loss: 1.5829 - val_fm/loss: 0.6953 - val_loss: 2.4102 - val_qt/ScoringRuleNetwork/quantiles: 0.1319 - val_qt/loss: 0.1319

Epoch 79/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3773 - fm/loss: 0.7419 - loss: 2.2828 - qt/ScoringRuleNetwork/quantiles: 0.1636 - qt/loss: 0.1636 - val_dm/loss: 1.4768 - val_fm/loss: 0.9317 - val_loss: 2.6026 - val_qt/ScoringRuleNetwork/quantiles: 0.1941 - val_qt/loss: 0.1941

Epoch 80/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8967 - fm/loss: 0.6920 - loss: 1.7216 - qt/ScoringRuleNetwork/quantiles: 0.1329 - qt/loss: 0.1329 - val_dm/loss: 0.9083 - val_fm/loss: 0.6699 - val_loss: 1.7038 - val_qt/ScoringRuleNetwork/quantiles: 0.1256 - val_qt/loss: 0.1256

Epoch 81/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.9803 - fm/loss: 0.8444 - loss: 1.9600 - qt/ScoringRuleNetwork/quantiles: 0.1352 - qt/loss: 0.1352 - val_dm/loss: 0.4506 - val_fm/loss: 0.7287 - val_loss: 1.3482 - val_qt/ScoringRuleNetwork/quantiles: 0.1689 - val_qt/loss: 0.1689

Epoch 82/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4618 - fm/loss: 0.8959 - loss: 2.5208 - qt/ScoringRuleNetwork/quantiles: 0.1630 - qt/loss: 0.1630 - val_dm/loss: 0.3483 - val_fm/loss: 0.7905 - val_loss: 1.3351 - val_qt/ScoringRuleNetwork/quantiles: 0.1963 - val_qt/loss: 0.1963

Epoch 83/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 3.0991 - fm/loss: 0.8724 - loss: 4.1217 - qt/ScoringRuleNetwork/quantiles: 0.1502 - qt/loss: 0.1502 - val_dm/loss: 2.3151 - val_fm/loss: 1.3152 - val_loss: 3.8248 - val_qt/ScoringRuleNetwork/quantiles: 0.1945 - val_qt/loss: 0.1945

Epoch 84/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2002 - fm/loss: 0.9180 - loss: 2.2569 - qt/ScoringRuleNetwork/quantiles: 0.1387 - qt/loss: 0.1387 - val_dm/loss: 0.6529 - val_fm/loss: 0.4987 - val_loss: 1.3263 - val_qt/ScoringRuleNetwork/quantiles: 0.1747 - val_qt/loss: 0.1747

Epoch 85/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8182 - fm/loss: 0.6728 - loss: 1.6276 - qt/ScoringRuleNetwork/quantiles: 0.1366 - qt/loss: 0.1366 - val_dm/loss: 0.7594 - val_fm/loss: 0.6681 - val_loss: 1.6123 - val_qt/ScoringRuleNetwork/quantiles: 0.1848 - val_qt/loss: 0.1848

Epoch 86/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1977 - fm/loss: 0.8066 - loss: 2.1526 - qt/ScoringRuleNetwork/quantiles: 0.1483 - qt/loss: 0.1483 - val_dm/loss: 0.8223 - val_fm/loss: 1.0801 - val_loss: 2.0658 - val_qt/ScoringRuleNetwork/quantiles: 0.1634 - val_qt/loss: 0.1634

Epoch 87/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3087 - fm/loss: 0.7765 - loss: 2.2208 - qt/ScoringRuleNetwork/quantiles: 0.1356 - qt/loss: 0.1356 - val_dm/loss: 2.3718 - val_fm/loss: 1.1012 - val_loss: 3.6753 - val_qt/ScoringRuleNetwork/quantiles: 0.2023 - val_qt/loss: 0.2023

Epoch 88/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0443 - fm/loss: 0.9502 - loss: 2.1230 - qt/ScoringRuleNetwork/quantiles: 0.1285 - qt/loss: 0.1285 - val_dm/loss: 1.2459 - val_fm/loss: 1.1952 - val_loss: 2.6332 - val_qt/ScoringRuleNetwork/quantiles: 0.1921 - val_qt/loss: 0.1921

Epoch 89/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.0765 - fm/loss: 0.8942 - loss: 3.1172 - qt/ScoringRuleNetwork/quantiles: 0.1465 - qt/loss: 0.1465 - val_dm/loss: 0.7950 - val_fm/loss: 1.4702 - val_loss: 2.4622 - val_qt/ScoringRuleNetwork/quantiles: 0.1969 - val_qt/loss: 0.1969

Epoch 90/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2055 - fm/loss: 0.7942 - loss: 2.1438 - qt/ScoringRuleNetwork/quantiles: 0.1441 - qt/loss: 0.1441 - val_dm/loss: 0.2767 - val_fm/loss: 1.3871 - val_loss: 1.8858 - val_qt/ScoringRuleNetwork/quantiles: 0.2219 - val_qt/loss: 0.2219

Epoch 91/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.8577 - fm/loss: 0.8603 - loss: 2.8563 - qt/ScoringRuleNetwork/quantiles: 0.1384 - qt/loss: 0.1384 - val_dm/loss: 0.9703 - val_fm/loss: 1.5383 - val_loss: 2.6820 - val_qt/ScoringRuleNetwork/quantiles: 0.1734 - val_qt/loss: 0.1734

Epoch 92/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 3.1555 - fm/loss: 0.8515 - loss: 4.1491 - qt/ScoringRuleNetwork/quantiles: 0.1421 - qt/loss: 0.1421 - val_dm/loss: 0.8016 - val_fm/loss: 0.9031 - val_loss: 1.8810 - val_qt/ScoringRuleNetwork/quantiles: 0.1763 - val_qt/loss: 0.1763

Epoch 93/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9742 - fm/loss: 0.6814 - loss: 1.7953 - qt/ScoringRuleNetwork/quantiles: 0.1397 - qt/loss: 0.1397 - val_dm/loss: 0.9930 - val_fm/loss: 1.1820 - val_loss: 2.3494 - val_qt/ScoringRuleNetwork/quantiles: 0.1743 - val_qt/loss: 0.1743

Epoch 94/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.8627 - fm/loss: 0.8223 - loss: 3.8250 - qt/ScoringRuleNetwork/quantiles: 0.1400 - qt/loss: 0.1400 - val_dm/loss: 1.0415 - val_fm/loss: 0.6803 - val_loss: 1.8966 - val_qt/ScoringRuleNetwork/quantiles: 0.1748 - val_qt/loss: 0.1748

Epoch 95/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.8425 - fm/loss: 0.9656 - loss: 2.9647 - qt/ScoringRuleNetwork/quantiles: 0.1567 - qt/loss: 0.1567 - val_dm/loss: 0.6774 - val_fm/loss: 0.8969 - val_loss: 1.7340 - val_qt/ScoringRuleNetwork/quantiles: 0.1596 - val_qt/loss: 0.1596

Epoch 96/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.9013 - fm/loss: 0.8184 - loss: 2.8581 - qt/ScoringRuleNetwork/quantiles: 0.1383 - qt/loss: 0.1383 - val_dm/loss: 0.7501 - val_fm/loss: 1.1641 - val_loss: 2.0530 - val_qt/ScoringRuleNetwork/quantiles: 0.1387 - val_qt/loss: 0.1387

Epoch 97/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2066 - fm/loss: 0.9416 - loss: 2.3034 - qt/ScoringRuleNetwork/quantiles: 0.1552 - qt/loss: 0.1552 - val_dm/loss: 38.7705 - val_fm/loss: 0.5073 - val_loss: 39.4652 - val_qt/ScoringRuleNetwork/quantiles: 0.1875 - val_qt/loss: 0.1875

Epoch 98/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0305 - fm/loss: 0.6321 - loss: 1.8094 - qt/ScoringRuleNetwork/quantiles: 0.1468 - qt/loss: 0.1468 - val_dm/loss: 1.7239 - val_fm/loss: 0.4558 - val_loss: 2.3320 - val_qt/ScoringRuleNetwork/quantiles: 0.1523 - val_qt/loss: 0.1523

Epoch 99/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1340 - fm/loss: 0.8363 - loss: 2.1248 - qt/ScoringRuleNetwork/quantiles: 0.1545 - qt/loss: 0.1545 - val_dm/loss: 0.7169 - val_fm/loss: 0.7013 - val_loss: 1.5720 - val_qt/ScoringRuleNetwork/quantiles: 0.1537 - val_qt/loss: 0.1537

Epoch 100/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9151 - fm/loss: 0.7677 - loss: 1.8192 - qt/ScoringRuleNetwork/quantiles: 0.1364 - qt/loss: 0.1364 - val_dm/loss: 0.6124 - val_fm/loss: 0.4343 - val_loss: 1.1836 - val_qt/ScoringRuleNetwork/quantiles: 0.1368 - val_qt/loss: 0.1368

Epoch 101/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.9653 - fm/loss: 0.7410 - loss: 1.8605 - qt/ScoringRuleNetwork/quantiles: 0.1542 - qt/loss: 0.1542 - val_dm/loss: 1.0899 - val_fm/loss: 0.6309 - val_loss: 1.8329 - val_qt/ScoringRuleNetwork/quantiles: 0.1120 - val_qt/loss: 0.1120

Epoch 102/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.2465 - fm/loss: 0.8087 - loss: 3.1949 - qt/ScoringRuleNetwork/quantiles: 0.1397 - qt/loss: 0.1397 - val_dm/loss: 0.7070 - val_fm/loss: 0.9322 - val_loss: 1.8455 - val_qt/ScoringRuleNetwork/quantiles: 0.2063 - val_qt/loss: 0.2063

Epoch 103/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2535 - fm/loss: 0.6718 - loss: 2.0543 - qt/ScoringRuleNetwork/quantiles: 0.1290 - qt/loss: 0.1290 - val_dm/loss: 0.8318 - val_fm/loss: 1.1873 - val_loss: 2.1657 - val_qt/ScoringRuleNetwork/quantiles: 0.1466 - val_qt/loss: 0.1466

Epoch 104/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3266 - fm/loss: 0.7644 - loss: 2.2332 - qt/ScoringRuleNetwork/quantiles: 0.1422 - qt/loss: 0.1422 - val_dm/loss: 0.9045 - val_fm/loss: 0.8998 - val_loss: 1.9583 - val_qt/ScoringRuleNetwork/quantiles: 0.1539 - val_qt/loss: 0.1539

Epoch 105/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0831 - fm/loss: 0.8844 - loss: 2.1006 - qt/ScoringRuleNetwork/quantiles: 0.1331 - qt/loss: 0.1331 - val_dm/loss: 0.6718 - val_fm/loss: 0.8799 - val_loss: 1.7455 - val_qt/ScoringRuleNetwork/quantiles: 0.1938 - val_qt/loss: 0.1938

Epoch 106/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0847 - fm/loss: 0.9067 - loss: 2.1281 - qt/ScoringRuleNetwork/quantiles: 0.1367 - qt/loss: 0.1367 - val_dm/loss: 0.9062 - val_fm/loss: 0.5835 - val_loss: 1.6616 - val_qt/ScoringRuleNetwork/quantiles: 0.1720 - val_qt/loss: 0.1720

Epoch 107/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1822 - fm/loss: 0.8520 - loss: 2.1982 - qt/ScoringRuleNetwork/quantiles: 0.1640 - qt/loss: 0.1640 - val_dm/loss: 0.6902 - val_fm/loss: 0.7490 - val_loss: 1.6345 - val_qt/ScoringRuleNetwork/quantiles: 0.1953 - val_qt/loss: 0.1953

Epoch 108/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.2179 - fm/loss: 0.9783 - loss: 3.3387 - qt/ScoringRuleNetwork/quantiles: 0.1425 - qt/loss: 0.1425 - val_dm/loss: 1.4837 - val_fm/loss: 0.6368 - val_loss: 2.3138 - val_qt/ScoringRuleNetwork/quantiles: 0.1933 - val_qt/loss: 0.1933

Epoch 109/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1508 - fm/loss: 0.8403 - loss: 2.1385 - qt/ScoringRuleNetwork/quantiles: 0.1474 - qt/loss: 0.1474 - val_dm/loss: 3.8295 - val_fm/loss: 0.5313 - val_loss: 4.5889 - val_qt/ScoringRuleNetwork/quantiles: 0.2282 - val_qt/loss: 0.2282

Epoch 110/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - dm/loss: 0.8333 - fm/loss: 0.8472 - loss: 1.8184 - qt/ScoringRuleNetwork/quantiles: 0.1379 - qt/loss: 0.1379 - val_dm/loss: 0.3271 - val_fm/loss: 0.6723 - val_loss: 1.1168 - val_qt/ScoringRuleNetwork/quantiles: 0.1174 - val_qt/loss: 0.1174

Epoch 111/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0807 - fm/loss: 0.7169 - loss: 1.9290 - qt/ScoringRuleNetwork/quantiles: 0.1315 - qt/loss: 0.1315 - val_dm/loss: 0.6512 - val_fm/loss: 0.5599 - val_loss: 1.3638 - val_qt/ScoringRuleNetwork/quantiles: 0.1528 - val_qt/loss: 0.1528

Epoch 112/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0338 - fm/loss: 0.8967 - loss: 2.0835 - qt/ScoringRuleNetwork/quantiles: 0.1531 - qt/loss: 0.1531 - val_dm/loss: 0.8215 - val_fm/loss: 0.4388 - val_loss: 1.3616 - val_qt/ScoringRuleNetwork/quantiles: 0.1012 - val_qt/loss: 0.1012

Epoch 113/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9443 - fm/loss: 0.7733 - loss: 1.8535 - qt/ScoringRuleNetwork/quantiles: 0.1359 - qt/loss: 0.1359 - val_dm/loss: 0.9678 - val_fm/loss: 1.0433 - val_loss: 2.1983 - val_qt/ScoringRuleNetwork/quantiles: 0.1872 - val_qt/loss: 0.1872

Epoch 114/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9306 - fm/loss: 0.7100 - loss: 1.7927 - qt/ScoringRuleNetwork/quantiles: 0.1521 - qt/loss: 0.1521 - val_dm/loss: 0.9742 - val_fm/loss: 1.1323 - val_loss: 2.2976 - val_qt/ScoringRuleNetwork/quantiles: 0.1912 - val_qt/loss: 0.1912

Epoch 115/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - dm/loss: 0.6972 - fm/loss: 0.6811 - loss: 1.5168 - qt/ScoringRuleNetwork/quantiles: 0.1384 - qt/loss: 0.1384 - val_dm/loss: 0.9664 - val_fm/loss: 0.7647 - val_loss: 1.9497 - val_qt/ScoringRuleNetwork/quantiles: 0.2186 - val_qt/loss: 0.2186

Epoch 116/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.2075 - fm/loss: 0.8246 - loss: 2.1902 - qt/ScoringRuleNetwork/quantiles: 0.1581 - qt/loss: 0.1581 - val_dm/loss: 2.0842 - val_fm/loss: 0.6925 - val_loss: 2.9560 - val_qt/ScoringRuleNetwork/quantiles: 0.1792 - val_qt/loss: 0.1792

Epoch 117/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1976 - fm/loss: 0.8213 - loss: 2.1541 - qt/ScoringRuleNetwork/quantiles: 0.1352 - qt/loss: 0.1352 - val_dm/loss: 0.5290 - val_fm/loss: 1.3000 - val_loss: 2.0519 - val_qt/ScoringRuleNetwork/quantiles: 0.2229 - val_qt/loss: 0.2229

Epoch 118/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9559 - fm/loss: 0.6625 - loss: 1.7712 - qt/ScoringRuleNetwork/quantiles: 0.1527 - qt/loss: 0.1527 - val_dm/loss: 1.4507 - val_fm/loss: 0.5051 - val_loss: 2.1197 - val_qt/ScoringRuleNetwork/quantiles: 0.1639 - val_qt/loss: 0.1639

Epoch 119/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9764 - fm/loss: 0.7803 - loss: 1.8906 - qt/ScoringRuleNetwork/quantiles: 0.1339 - qt/loss: 0.1339 - val_dm/loss: 0.6422 - val_fm/loss: 0.8191 - val_loss: 1.5984 - val_qt/ScoringRuleNetwork/quantiles: 0.1371 - val_qt/loss: 0.1371

Epoch 120/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.9035 - fm/loss: 0.8591 - loss: 2.9039 - qt/ScoringRuleNetwork/quantiles: 0.1414 - qt/loss: 0.1414 - val_dm/loss: 0.9140 - val_fm/loss: 1.1617 - val_loss: 2.1977 - val_qt/ScoringRuleNetwork/quantiles: 0.1220 - val_qt/loss: 0.1220

Epoch 121/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 5.0410 - fm/loss: 0.7621 - loss: 5.9517 - qt/ScoringRuleNetwork/quantiles: 0.1486 - qt/loss: 0.1486 - val_dm/loss: 1.1583 - val_fm/loss: 1.0608 - val_loss: 2.3959 - val_qt/ScoringRuleNetwork/quantiles: 0.1768 - val_qt/loss: 0.1768

Epoch 122/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.8811 - fm/loss: 0.9697 - loss: 1.9805 - qt/ScoringRuleNetwork/quantiles: 0.1297 - qt/loss: 0.1297 - val_dm/loss: 0.6339 - val_fm/loss: 0.6048 - val_loss: 1.3712 - val_qt/ScoringRuleNetwork/quantiles: 0.1325 - val_qt/loss: 0.1325

Epoch 123/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 5.5622 - fm/loss: 0.8531 - loss: 6.5514 - qt/ScoringRuleNetwork/quantiles: 0.1360 - qt/loss: 0.1360 - val_dm/loss: 0.9288 - val_fm/loss: 1.0185 - val_loss: 2.1619 - val_qt/ScoringRuleNetwork/quantiles: 0.2146 - val_qt/loss: 0.2146

Epoch 124/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 5.3078 - fm/loss: 0.8605 - loss: 6.3015 - qt/ScoringRuleNetwork/quantiles: 0.1332 - qt/loss: 0.1332 - val_dm/loss: 1.2114 - val_fm/loss: 0.6807 - val_loss: 2.0841 - val_qt/ScoringRuleNetwork/quantiles: 0.1921 - val_qt/loss: 0.1921

Epoch 125/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8836 - fm/loss: 0.9084 - loss: 1.9345 - qt/ScoringRuleNetwork/quantiles: 0.1425 - qt/loss: 0.1425 - val_dm/loss: 2.7172 - val_fm/loss: 0.7699 - val_loss: 3.7532 - val_qt/ScoringRuleNetwork/quantiles: 0.2661 - val_qt/loss: 0.2661

Epoch 126/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.0548 - fm/loss: 0.7415 - loss: 2.9237 - qt/ScoringRuleNetwork/quantiles: 0.1273 - qt/loss: 0.1273 - val_dm/loss: 0.7198 - val_fm/loss: 0.3559 - val_loss: 1.2279 - val_qt/ScoringRuleNetwork/quantiles: 0.1522 - val_qt/loss: 0.1522

Epoch 127/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0209 - fm/loss: 0.6186 - loss: 1.7809 - qt/ScoringRuleNetwork/quantiles: 0.1414 - qt/loss: 0.1414 - val_dm/loss: 1.5735 - val_fm/loss: 0.8613 - val_loss: 2.5994 - val_qt/ScoringRuleNetwork/quantiles: 0.1647 - val_qt/loss: 0.1647

Epoch 128/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.1485 - fm/loss: 0.7518 - loss: 3.0398 - qt/ScoringRuleNetwork/quantiles: 0.1395 - qt/loss: 0.1395 - val_dm/loss: 1.1700 - val_fm/loss: 1.3007 - val_loss: 2.6592 - val_qt/ScoringRuleNetwork/quantiles: 0.1886 - val_qt/loss: 0.1886

Epoch 129/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 13.3660 - fm/loss: 0.7142 - loss: 14.2154 - qt/ScoringRuleNetwork/quantiles: 0.1352 - qt/loss: 0.1352 - val_dm/loss: 0.6479 - val_fm/loss: 1.9062 - val_loss: 2.7438 - val_qt/ScoringRuleNetwork/quantiles: 0.1897 - val_qt/loss: 0.1897

Epoch 130/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3461 - fm/loss: 0.7626 - loss: 2.2475 - qt/ScoringRuleNetwork/quantiles: 0.1388 - qt/loss: 0.1388 - val_dm/loss: 0.4662 - val_fm/loss: 1.1378 - val_loss: 1.7694 - val_qt/ScoringRuleNetwork/quantiles: 0.1654 - val_qt/loss: 0.1654

Epoch 131/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9484 - fm/loss: 0.8573 - loss: 1.9324 - qt/ScoringRuleNetwork/quantiles: 0.1267 - qt/loss: 0.1267 - val_dm/loss: 0.7182 - val_fm/loss: 0.5324 - val_loss: 1.3691 - val_qt/ScoringRuleNetwork/quantiles: 0.1185 - val_qt/loss: 0.1185

Epoch 132/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0230 - fm/loss: 0.7238 - loss: 1.8760 - qt/ScoringRuleNetwork/quantiles: 0.1292 - qt/loss: 0.1292 - val_dm/loss: 1.1916 - val_fm/loss: 0.3550 - val_loss: 1.6711 - val_qt/ScoringRuleNetwork/quantiles: 0.1245 - val_qt/loss: 0.1245

Epoch 133/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 14.0701 - fm/loss: 1.0499 - loss: 15.2645 - qt/ScoringRuleNetwork/quantiles: 0.1445 - qt/loss: 0.1445 - val_dm/loss: 1.1853 - val_fm/loss: 0.5614 - val_loss: 1.9403 - val_qt/ScoringRuleNetwork/quantiles: 0.1936 - val_qt/loss: 0.1936

Epoch 134/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8123 - fm/loss: 0.9469 - loss: 1.8940 - qt/ScoringRuleNetwork/quantiles: 0.1347 - qt/loss: 0.1347 - val_dm/loss: 3.5764 - val_fm/loss: 0.5975 - val_loss: 4.2751 - val_qt/ScoringRuleNetwork/quantiles: 0.1012 - val_qt/loss: 0.1012

Epoch 135/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.8603 - fm/loss: 0.8503 - loss: 2.8353 - qt/ScoringRuleNetwork/quantiles: 0.1247 - qt/loss: 0.1247 - val_dm/loss: 3.1361 - val_fm/loss: 0.6592 - val_loss: 3.9226 - val_qt/ScoringRuleNetwork/quantiles: 0.1272 - val_qt/loss: 0.1272

Epoch 136/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8718 - fm/loss: 0.5729 - loss: 1.5856 - qt/ScoringRuleNetwork/quantiles: 0.1409 - qt/loss: 0.1409 - val_dm/loss: 2.3072 - val_fm/loss: 0.8433 - val_loss: 3.3490 - val_qt/ScoringRuleNetwork/quantiles: 0.1985 - val_qt/loss: 0.1985

Epoch 137/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4015 - fm/loss: 0.5777 - loss: 2.1166 - qt/ScoringRuleNetwork/quantiles: 0.1373 - qt/loss: 0.1373 - val_dm/loss: 1.1949 - val_fm/loss: 1.2662 - val_loss: 2.6316 - val_qt/ScoringRuleNetwork/quantiles: 0.1705 - val_qt/loss: 0.1705

Epoch 138/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3926 - fm/loss: 0.7718 - loss: 2.2993 - qt/ScoringRuleNetwork/quantiles: 0.1349 - qt/loss: 0.1349 - val_dm/loss: 2.0403 - val_fm/loss: 1.2156 - val_loss: 3.4219 - val_qt/ScoringRuleNetwork/quantiles: 0.1659 - val_qt/loss: 0.1659

Epoch 139/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 4ms/step - dm/loss: 1.4306 - fm/loss: 0.4843 - loss: 2.0351 - qt/ScoringRuleNetwork/quantiles: 0.1201 - qt/loss: 0.1201 - val_dm/loss: 0.8274 - val_fm/loss: 0.8557 - val_loss: 1.8421 - val_qt/ScoringRuleNetwork/quantiles: 0.1590 - val_qt/loss: 0.1590

Epoch 140/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 4.0633 - fm/loss: 0.5305 - loss: 4.7238 - qt/ScoringRuleNetwork/quantiles: 0.1299 - qt/loss: 0.1299 - val_dm/loss: 1.3183 - val_fm/loss: 0.7575 - val_loss: 2.2694 - val_qt/ScoringRuleNetwork/quantiles: 0.1937 - val_qt/loss: 0.1937

Epoch 141/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.2056 - fm/loss: 0.8763 - loss: 2.2226 - qt/ScoringRuleNetwork/quantiles: 0.1407 - qt/loss: 0.1407 - val_dm/loss: 1.0669 - val_fm/loss: 1.4024 - val_loss: 2.6475 - val_qt/ScoringRuleNetwork/quantiles: 0.1782 - val_qt/loss: 0.1782

Epoch 142/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0163 - fm/loss: 0.6985 - loss: 1.8480 - qt/ScoringRuleNetwork/quantiles: 0.1332 - qt/loss: 0.1332 - val_dm/loss: 1.5988 - val_fm/loss: 0.4608 - val_loss: 2.2218 - val_qt/ScoringRuleNetwork/quantiles: 0.1621 - val_qt/loss: 0.1621

Epoch 143/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.0194 - fm/loss: 0.6225 - loss: 1.7719 - qt/ScoringRuleNetwork/quantiles: 0.1300 - qt/loss: 0.1300 - val_dm/loss: 1.2864 - val_fm/loss: 0.8066 - val_loss: 2.2558 - val_qt/ScoringRuleNetwork/quantiles: 0.1628 - val_qt/loss: 0.1628

Epoch 144/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0663 - fm/loss: 0.9160 - loss: 2.1367 - qt/ScoringRuleNetwork/quantiles: 0.1544 - qt/loss: 0.1544 - val_dm/loss: 0.4721 - val_fm/loss: 0.6428 - val_loss: 1.2622 - val_qt/ScoringRuleNetwork/quantiles: 0.1473 - val_qt/loss: 0.1473

Epoch 145/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0304 - fm/loss: 0.7825 - loss: 1.9617 - qt/ScoringRuleNetwork/quantiles: 0.1488 - qt/loss: 0.1488 - val_dm/loss: 0.5621 - val_fm/loss: 1.0172 - val_loss: 1.7358 - val_qt/ScoringRuleNetwork/quantiles: 0.1564 - val_qt/loss: 0.1564

Epoch 146/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9686 - fm/loss: 0.8887 - loss: 1.9612 - qt/ScoringRuleNetwork/quantiles: 0.1040 - qt/loss: 0.1040 - val_dm/loss: 1.0123 - val_fm/loss: 0.4890 - val_loss: 1.6280 - val_qt/ScoringRuleNetwork/quantiles: 0.1266 - val_qt/loss: 0.1266

Epoch 147/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8804 - fm/loss: 0.8786 - loss: 1.9174 - qt/ScoringRuleNetwork/quantiles: 0.1584 - qt/loss: 0.1584 - val_dm/loss: 1.0154 - val_fm/loss: 1.3820 - val_loss: 2.5904 - val_qt/ScoringRuleNetwork/quantiles: 0.1930 - val_qt/loss: 0.1930

Epoch 148/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9535 - fm/loss: 0.7252 - loss: 1.8079 - qt/ScoringRuleNetwork/quantiles: 0.1292 - qt/loss: 0.1292 - val_dm/loss: 3.9897 - val_fm/loss: 0.5068 - val_loss: 4.6613 - val_qt/ScoringRuleNetwork/quantiles: 0.1648 - val_qt/loss: 0.1648

Epoch 149/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9895 - fm/loss: 1.0621 - loss: 2.1811 - qt/ScoringRuleNetwork/quantiles: 0.1295 - qt/loss: 0.1295 - val_dm/loss: 0.8206 - val_fm/loss: 0.8460 - val_loss: 1.8538 - val_qt/ScoringRuleNetwork/quantiles: 0.1872 - val_qt/loss: 0.1872

Epoch 150/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1885 - fm/loss: 0.8370 - loss: 2.1502 - qt/ScoringRuleNetwork/quantiles: 0.1247 - qt/loss: 0.1247 - val_dm/loss: 1.6561 - val_fm/loss: 0.6462 - val_loss: 2.4227 - val_qt/ScoringRuleNetwork/quantiles: 0.1204 - val_qt/loss: 0.1204

Epoch 151/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2309 - fm/loss: 0.8328 - loss: 2.1925 - qt/ScoringRuleNetwork/quantiles: 0.1288 - qt/loss: 0.1288 - val_dm/loss: 1.8893 - val_fm/loss: 0.5729 - val_loss: 2.5725 - val_qt/ScoringRuleNetwork/quantiles: 0.1102 - val_qt/loss: 0.1102

Epoch 152/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.9808 - fm/loss: 0.9042 - loss: 2.0300 - qt/ScoringRuleNetwork/quantiles: 0.1450 - qt/loss: 0.1450 - val_dm/loss: 2.7005 - val_fm/loss: 2.2124 - val_loss: 5.1454 - val_qt/ScoringRuleNetwork/quantiles: 0.2325 - val_qt/loss: 0.2325

Epoch 153/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.5549 - fm/loss: 1.0769 - loss: 2.7533 - qt/ScoringRuleNetwork/quantiles: 0.1216 - qt/loss: 0.1216 - val_dm/loss: 0.6232 - val_fm/loss: 1.3084 - val_loss: 2.1192 - val_qt/ScoringRuleNetwork/quantiles: 0.1876 - val_qt/loss: 0.1876

Epoch 154/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0303 - fm/loss: 0.8221 - loss: 1.9813 - qt/ScoringRuleNetwork/quantiles: 0.1289 - qt/loss: 0.1289 - val_dm/loss: 0.9540 - val_fm/loss: 0.6643 - val_loss: 1.7984 - val_qt/ScoringRuleNetwork/quantiles: 0.1801 - val_qt/loss: 0.1801

Epoch 155/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 4.9127 - fm/loss: 0.6055 - loss: 5.6406 - qt/ScoringRuleNetwork/quantiles: 0.1224 - qt/loss: 0.1224 - val_dm/loss: 0.5917 - val_fm/loss: 1.1055 - val_loss: 1.8789 - val_qt/ScoringRuleNetwork/quantiles: 0.1818 - val_qt/loss: 0.1818

Epoch 156/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0521 - fm/loss: 0.8938 - loss: 2.0911 - qt/ScoringRuleNetwork/quantiles: 0.1451 - qt/loss: 0.1451 - val_dm/loss: 0.7065 - val_fm/loss: 1.0583 - val_loss: 1.9789 - val_qt/ScoringRuleNetwork/quantiles: 0.2140 - val_qt/loss: 0.2140

Epoch 157/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2522 - fm/loss: 0.5971 - loss: 1.9846 - qt/ScoringRuleNetwork/quantiles: 0.1354 - qt/loss: 0.1354 - val_dm/loss: 1.0593 - val_fm/loss: 0.3130 - val_loss: 1.5546 - val_qt/ScoringRuleNetwork/quantiles: 0.1823 - val_qt/loss: 0.1823

Epoch 158/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.6974 - fm/loss: 0.5456 - loss: 2.3650 - qt/ScoringRuleNetwork/quantiles: 0.1220 - qt/loss: 0.1220 - val_dm/loss: 0.5399 - val_fm/loss: 0.3387 - val_loss: 1.0424 - val_qt/ScoringRuleNetwork/quantiles: 0.1639 - val_qt/loss: 0.1639

Epoch 159/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3207 - fm/loss: 0.6688 - loss: 2.1092 - qt/ScoringRuleNetwork/quantiles: 0.1197 - qt/loss: 0.1197 - val_dm/loss: 8.0193 - val_fm/loss: 0.9509 - val_loss: 9.1323 - val_qt/ScoringRuleNetwork/quantiles: 0.1621 - val_qt/loss: 0.1621

Epoch 160/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8600 - fm/loss: 0.7857 - loss: 1.7764 - qt/ScoringRuleNetwork/quantiles: 0.1307 - qt/loss: 0.1307 - val_dm/loss: 1.1220 - val_fm/loss: 0.6845 - val_loss: 1.9304 - val_qt/ScoringRuleNetwork/quantiles: 0.1239 - val_qt/loss: 0.1239

Epoch 161/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9983 - fm/loss: 0.6942 - loss: 1.8496 - qt/ScoringRuleNetwork/quantiles: 0.1571 - qt/loss: 0.1571 - val_dm/loss: 2.2431 - val_fm/loss: 1.2187 - val_loss: 3.6786 - val_qt/ScoringRuleNetwork/quantiles: 0.2168 - val_qt/loss: 0.2168

Epoch 162/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1328 - fm/loss: 0.8929 - loss: 2.1697 - qt/ScoringRuleNetwork/quantiles: 0.1440 - qt/loss: 0.1440 - val_dm/loss: 1.7011 - val_fm/loss: 1.1347 - val_loss: 3.0188 - val_qt/ScoringRuleNetwork/quantiles: 0.1829 - val_qt/loss: 0.1829

Epoch 163/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0424 - fm/loss: 0.8096 - loss: 2.0003 - qt/ScoringRuleNetwork/quantiles: 0.1483 - qt/loss: 0.1483 - val_dm/loss: 3.7580 - val_fm/loss: 1.6249 - val_loss: 5.6039 - val_qt/ScoringRuleNetwork/quantiles: 0.2211 - val_qt/loss: 0.2211

Epoch 164/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 2.7833 - fm/loss: 0.6954 - loss: 3.6117 - qt/ScoringRuleNetwork/quantiles: 0.1330 - qt/loss: 0.1330 - val_dm/loss: 0.9480 - val_fm/loss: 1.3702 - val_loss: 2.4991 - val_qt/ScoringRuleNetwork/quantiles: 0.1809 - val_qt/loss: 0.1809

Epoch 165/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1295 - fm/loss: 0.9176 - loss: 2.1935 - qt/ScoringRuleNetwork/quantiles: 0.1464 - qt/loss: 0.1464 - val_dm/loss: 0.7963 - val_fm/loss: 0.5081 - val_loss: 1.4993 - val_qt/ScoringRuleNetwork/quantiles: 0.1949 - val_qt/loss: 0.1949

Epoch 166/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9867 - fm/loss: 0.5958 - loss: 1.7027 - qt/ScoringRuleNetwork/quantiles: 0.1202 - qt/loss: 0.1202 - val_dm/loss: 0.7588 - val_fm/loss: 1.0559 - val_loss: 2.0027 - val_qt/ScoringRuleNetwork/quantiles: 0.1880 - val_qt/loss: 0.1880

Epoch 167/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 0.9541 - fm/loss: 0.7626 - loss: 1.8564 - qt/ScoringRuleNetwork/quantiles: 0.1398 - qt/loss: 0.1398 - val_dm/loss: 1.0473 - val_fm/loss: 0.9744 - val_loss: 2.2276 - val_qt/ScoringRuleNetwork/quantiles: 0.2059 - val_qt/loss: 0.2059

Epoch 168/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.1675 - fm/loss: 0.7252 - loss: 2.0082 - qt/ScoringRuleNetwork/quantiles: 0.1154 - qt/loss: 0.1154 - val_dm/loss: 1.2930 - val_fm/loss: 1.3255 - val_loss: 2.8069 - val_qt/ScoringRuleNetwork/quantiles: 0.1884 - val_qt/loss: 0.1884

Epoch 169/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3761 - fm/loss: 0.7562 - loss: 2.2858 - qt/ScoringRuleNetwork/quantiles: 0.1535 - qt/loss: 0.1535 - val_dm/loss: 7.1981 - val_fm/loss: 1.2354 - val_loss: 8.6310 - val_qt/ScoringRuleNetwork/quantiles: 0.1975 - val_qt/loss: 0.1975

Epoch 170/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2185 - fm/loss: 0.6666 - loss: 2.0082 - qt/ScoringRuleNetwork/quantiles: 0.1231 - qt/loss: 0.1231 - val_dm/loss: 0.2724 - val_fm/loss: 1.2911 - val_loss: 1.7675 - val_qt/ScoringRuleNetwork/quantiles: 0.2040 - val_qt/loss: 0.2040

Epoch 171/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9375 - fm/loss: 0.4969 - loss: 1.5573 - qt/ScoringRuleNetwork/quantiles: 0.1228 - qt/loss: 0.1228 - val_dm/loss: 0.6371 - val_fm/loss: 0.9305 - val_loss: 1.7149 - val_qt/ScoringRuleNetwork/quantiles: 0.1473 - val_qt/loss: 0.1473

Epoch 172/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4163 - fm/loss: 0.8157 - loss: 2.3736 - qt/ScoringRuleNetwork/quantiles: 0.1416 - qt/loss: 0.1416 - val_dm/loss: 0.8722 - val_fm/loss: 0.6204 - val_loss: 1.6849 - val_qt/ScoringRuleNetwork/quantiles: 0.1923 - val_qt/loss: 0.1923

Epoch 173/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.4574 - fm/loss: 0.8089 - loss: 2.3933 - qt/ScoringRuleNetwork/quantiles: 0.1271 - qt/loss: 0.1271 - val_dm/loss: 0.8125 - val_fm/loss: 0.6110 - val_loss: 1.5871 - val_qt/ScoringRuleNetwork/quantiles: 0.1636 - val_qt/loss: 0.1636

Epoch 174/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.0003 - fm/loss: 0.7220 - loss: 2.8566 - qt/ScoringRuleNetwork/quantiles: 0.1344 - qt/loss: 0.1344 - val_dm/loss: 5.2932 - val_fm/loss: 0.6603 - val_loss: 6.0957 - val_qt/ScoringRuleNetwork/quantiles: 0.1422 - val_qt/loss: 0.1422

Epoch 175/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9753 - fm/loss: 0.7462 - loss: 1.8474 - qt/ScoringRuleNetwork/quantiles: 0.1258 - qt/loss: 0.1258 - val_dm/loss: 0.6648 - val_fm/loss: 0.5164 - val_loss: 1.3339 - val_qt/ScoringRuleNetwork/quantiles: 0.1526 - val_qt/loss: 0.1526

Epoch 176/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9895 - fm/loss: 0.8952 - loss: 2.0304 - qt/ScoringRuleNetwork/quantiles: 0.1457 - qt/loss: 0.1457 - val_dm/loss: 1.1135 - val_fm/loss: 0.7876 - val_loss: 2.1088 - val_qt/ScoringRuleNetwork/quantiles: 0.2077 - val_qt/loss: 0.2077

Epoch 177/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9553 - fm/loss: 0.6125 - loss: 1.7079 - qt/ScoringRuleNetwork/quantiles: 0.1401 - qt/loss: 0.1401 - val_dm/loss: 0.7084 - val_fm/loss: 0.9892 - val_loss: 1.9028 - val_qt/ScoringRuleNetwork/quantiles: 0.2053 - val_qt/loss: 0.2053

Epoch 178/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.7179 - fm/loss: 0.4881 - loss: 2.3226 - qt/ScoringRuleNetwork/quantiles: 0.1167 - qt/loss: 0.1167 - val_dm/loss: 0.8025 - val_fm/loss: 1.1773 - val_loss: 2.2321 - val_qt/ScoringRuleNetwork/quantiles: 0.2522 - val_qt/loss: 0.2522

Epoch 179/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 7.6043 - fm/loss: 0.5492 - loss: 8.2786 - qt/ScoringRuleNetwork/quantiles: 0.1250 - qt/loss: 0.1250 - val_dm/loss: 1.0663 - val_fm/loss: 2.5206 - val_loss: 3.8297 - val_qt/ScoringRuleNetwork/quantiles: 0.2428 - val_qt/loss: 0.2428

Epoch 180/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0872 - fm/loss: 0.7911 - loss: 2.0188 - qt/ScoringRuleNetwork/quantiles: 0.1405 - qt/loss: 0.1405 - val_dm/loss: 0.8065 - val_fm/loss: 0.5094 - val_loss: 1.4787 - val_qt/ScoringRuleNetwork/quantiles: 0.1628 - val_qt/loss: 0.1628

Epoch 181/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0444 - fm/loss: 0.6656 - loss: 1.8344 - qt/ScoringRuleNetwork/quantiles: 0.1244 - qt/loss: 0.1244 - val_dm/loss: 1.2358 - val_fm/loss: 1.3633 - val_loss: 2.7700 - val_qt/ScoringRuleNetwork/quantiles: 0.1709 - val_qt/loss: 0.1709

Epoch 182/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 20.3302 - fm/loss: 0.7017 - loss: 21.1566 - qt/ScoringRuleNetwork/quantiles: 0.1247 - qt/loss: 0.1247 - val_dm/loss: 1.1379 - val_fm/loss: 1.0126 - val_loss: 2.3237 - val_qt/ScoringRuleNetwork/quantiles: 0.1732 - val_qt/loss: 0.1732

Epoch 183/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0857 - fm/loss: 0.5860 - loss: 1.7964 - qt/ScoringRuleNetwork/quantiles: 0.1247 - qt/loss: 0.1247 - val_dm/loss: 0.5444 - val_fm/loss: 0.9637 - val_loss: 1.7568 - val_qt/ScoringRuleNetwork/quantiles: 0.2487 - val_qt/loss: 0.2487

Epoch 184/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9738 - fm/loss: 0.6140 - loss: 1.7206 - qt/ScoringRuleNetwork/quantiles: 0.1328 - qt/loss: 0.1328 - val_dm/loss: 1.0668 - val_fm/loss: 0.7102 - val_loss: 2.0108 - val_qt/ScoringRuleNetwork/quantiles: 0.2339 - val_qt/loss: 0.2339

Epoch 185/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8565 - fm/loss: 0.7472 - loss: 1.7528 - qt/ScoringRuleNetwork/quantiles: 0.1491 - qt/loss: 0.1491 - val_dm/loss: 0.7170 - val_fm/loss: 0.3008 - val_loss: 1.1403 - val_qt/ScoringRuleNetwork/quantiles: 0.1225 - val_qt/loss: 0.1225

Epoch 186/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.8252 - fm/loss: 0.6709 - loss: 1.6304 - qt/ScoringRuleNetwork/quantiles: 0.1343 - qt/loss: 0.1343 - val_dm/loss: 1.1428 - val_fm/loss: 1.0780 - val_loss: 2.4326 - val_qt/ScoringRuleNetwork/quantiles: 0.2118 - val_qt/loss: 0.2118

Epoch 187/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.5756 - fm/loss: 0.8667 - loss: 2.5850 - qt/ScoringRuleNetwork/quantiles: 0.1427 - qt/loss: 0.1427 - val_dm/loss: 0.7597 - val_fm/loss: 1.0930 - val_loss: 1.9778 - val_qt/ScoringRuleNetwork/quantiles: 0.1251 - val_qt/loss: 0.1251

Epoch 188/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 0.9388 - fm/loss: 0.6550 - loss: 1.7269 - qt/ScoringRuleNetwork/quantiles: 0.1331 - qt/loss: 0.1331 - val_dm/loss: 0.4498 - val_fm/loss: 0.7448 - val_loss: 1.3405 - val_qt/ScoringRuleNetwork/quantiles: 0.1459 - val_qt/loss: 0.1459

Epoch 189/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 2.7129 - fm/loss: 0.7356 - loss: 3.5890 - qt/ScoringRuleNetwork/quantiles: 0.1405 - qt/loss: 0.1405 - val_dm/loss: 10.1971 - val_fm/loss: 1.1973 - val_loss: 11.5933 - val_qt/ScoringRuleNetwork/quantiles: 0.1989 - val_qt/loss: 0.1989

Epoch 190/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0024 - fm/loss: 0.7629 - loss: 1.8828 - qt/ScoringRuleNetwork/quantiles: 0.1176 - qt/loss: 0.1176 - val_dm/loss: 0.6409 - val_fm/loss: 0.6912 - val_loss: 1.4987 - val_qt/ScoringRuleNetwork/quantiles: 0.1666 - val_qt/loss: 0.1666

Epoch 191/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.0253 - fm/loss: 0.8454 - loss: 2.0072 - qt/ScoringRuleNetwork/quantiles: 0.1365 - qt/loss: 0.1365 - val_dm/loss: 1.4429 - val_fm/loss: 0.7131 - val_loss: 2.3438 - val_qt/ScoringRuleNetwork/quantiles: 0.1878 - val_qt/loss: 0.1878

Epoch 192/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.2708 - fm/loss: 0.8020 - loss: 2.1996 - qt/ScoringRuleNetwork/quantiles: 0.1267 - qt/loss: 0.1267 - val_dm/loss: 1.7233 - val_fm/loss: 0.7767 - val_loss: 2.6503 - val_qt/ScoringRuleNetwork/quantiles: 0.1504 - val_qt/loss: 0.1504

Epoch 193/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1237 - fm/loss: 0.6033 - loss: 1.8439 - qt/ScoringRuleNetwork/quantiles: 0.1169 - qt/loss: 0.1169 - val_dm/loss: 0.4964 - val_fm/loss: 0.7205 - val_loss: 1.4133 - val_qt/ScoringRuleNetwork/quantiles: 0.1964 - val_qt/loss: 0.1964

Epoch 194/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.4366 - fm/loss: 0.7014 - loss: 2.2687 - qt/ScoringRuleNetwork/quantiles: 0.1307 - qt/loss: 0.1307 - val_dm/loss: 0.5322 - val_fm/loss: 0.7864 - val_loss: 1.4912 - val_qt/ScoringRuleNetwork/quantiles: 0.1727 - val_qt/loss: 0.1727

Epoch 195/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.5657 - fm/loss: 0.8265 - loss: 2.5183 - qt/ScoringRuleNetwork/quantiles: 0.1261 - qt/loss: 0.1261 - val_dm/loss: 1.0714 - val_fm/loss: 0.5415 - val_loss: 1.8009 - val_qt/ScoringRuleNetwork/quantiles: 0.1880 - val_qt/loss: 0.1880

Epoch 196/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.2725 - fm/loss: 0.7997 - loss: 2.1938 - qt/ScoringRuleNetwork/quantiles: 0.1216 - qt/loss: 0.1216 - val_dm/loss: 2.1669 - val_fm/loss: 0.5086 - val_loss: 2.8206 - val_qt/ScoringRuleNetwork/quantiles: 0.1450 - val_qt/loss: 0.1450

Epoch 197/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1597 - fm/loss: 0.8918 - loss: 2.1918 - qt/ScoringRuleNetwork/quantiles: 0.1403 - qt/loss: 0.1403 - val_dm/loss: 7.1613 - val_fm/loss: 1.0371 - val_loss: 8.3988 - val_qt/ScoringRuleNetwork/quantiles: 0.2005 - val_qt/loss: 0.2005

Epoch 198/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.1614 - fm/loss: 0.8064 - loss: 2.1161 - qt/ScoringRuleNetwork/quantiles: 0.1483 - qt/loss: 0.1483 - val_dm/loss: 2.2497 - val_fm/loss: 1.7624 - val_loss: 4.1809 - val_qt/ScoringRuleNetwork/quantiles: 0.1688 - val_qt/loss: 0.1688

Epoch 199/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 6ms/step - dm/loss: 1.3844 - fm/loss: 0.7441 - loss: 2.2523 - qt/ScoringRuleNetwork/quantiles: 0.1237 - qt/loss: 0.1237 - val_dm/loss: 0.9442 - val_fm/loss: 0.7954 - val_loss: 1.9248 - val_qt/ScoringRuleNetwork/quantiles: 0.1852 - val_qt/loss: 0.1852

Epoch 200/200

32/32 ━━━━━━━━━━━━━━━━━━━━ 0s 5ms/step - dm/loss: 1.3325 - fm/loss: 0.7815 - loss: 2.2417 - qt/ScoringRuleNetwork/quantiles: 0.1276 - qt/loss: 0.1276 - val_dm/loss: 1.0658 - val_fm/loss: 0.4830 - val_loss: 1.6963 - val_qt/ScoringRuleNetwork/quantiles: 0.1474 - val_qt/loss: 0.1474
INFO:bayesflow:Training completed in 42.14 seconds.
# Obtain posterior draws from all ensemble members
marginal_draws = workflow.approximator.sample(
    conditions=test_data,
    batch_size=50,
    num_samples=300,
    merge_members=False
)
WARNING:bayesflow:JAX backend needs to preallocate random samples for 'max_steps=1000'.
WARNING:bayesflow:JAX backend needs to preallocate random samples for 'max_steps=1000'.
# Only plot recovery
for member, samples in marginal_draws.items():
    f = bf.diagnostics.recovery(samples, test_data, variable_names=param_names)
    f.suptitle(f"Recovery - Ensemble Member {member.upper()}")

### Your code here - plot calibration ECDF plots
marker_mapping = dict(quantiles="_")

estimates = workflow.estimate(conditions=test_data)

f = bf.diagnostics.recovery_from_estimates(estimates["qt"], test_data, variable_names=param_names, marker_mapping=marker_mapping)
INFO:bayesflow:Estimating completed in 0.69 seconds.

Fitting Real Data

This will get messy!

Data Considerations

data = pd.read_csv(
    "https://raw.githubusercontent.com/simschaefer/amortized-dmc/main/empirical_data/experiment_data_narrow.csv"
)
data = (data[['participant', 'rt', 'accuracy', 'congruency_num']]
        .rename(columns={'congruency_num': "congruency"})
)
data.head()

Determine the proportion of missing values.

num_trials = data.groupby("participant").size().values

print("Avg. number of trials", (num_trials / 400).mean())
print("Std. number of trials", (num_trials / 400).std())

Subsampling for training robustness: In real experiments, participants often have missing or excluded trials (e.g., timeouts). If the network is only trained on data with exactly \(N\) trials, it may struggle when applied to real data with fewer observations. summary_stats_subsample addresses this by randomly dropping ~14% of trials during training via a Bernoulli mask (p=0.86). The retained proportion is appended as a 23rd feature (props), so the network can account for varying sample sizes. At inference time, set subsample=False and provide the actual trial proportion manually.

def summary_stats_subsample(conditions, rt, accuracy, num_quantiles=5, subsample=True, props=None, **kwargs):

    quantiles = np.linspace(0.05, 0.95, num_quantiles)
    rt        = rt[..., 0]
    conditions = conditions[..., 0]
    accuracy   = accuracy[..., 0]
    
    if subsample:
        keep = np.random.binomial(n=1, p=0.86, size=rt.shape) == 1
        props = keep.sum(axis=1, keepdims=1) / rt.shape[-1]
    else:
        keep = np.ones(shape=rt.shape) == 1
        props = props if props else 1.

    quantile_parts = []
    for cond_val in (0, 1):
        for acc_val in (0, 1):
            mask = (conditions == cond_val) & (accuracy == acc_val) & keep
            q = np.nanquantile(np.where(mask, rt, np.nan), quantiles, axis=1).T
            quantile_parts.append(q)

    acc_c0 = np.nanmean(np.where(conditions == 0, accuracy, np.nan), axis=1, keepdims=True)
    acc_c1 = np.nanmean(np.where(conditions == 1, accuracy, np.nan), axis=1, keepdims=True)

    stats = np.concatenate([*quantile_parts, acc_c0, acc_c1, props], axis=1)

    stats[np.isnan(stats)] = -1.

    return {"summary_stats": stats}
train_data = simulator.sample(batch_size=num_train, num_obs=400)
test_data = simulator.sample(batch_size=num_test, num_obs=400)
train_data |= summary_stats_subsample(**train_data)
test_data |= summary_stats_subsample(**test_data)
test_data["summary_stats"][:, -1]

Training and In-Silico Diagnostics

Below, we use the hyperparameters determined via Optuna.

batch_size = 32
depth = 3
width = 128
initial_lr = 5e-4

workflow = bf.BasicWorkflow(
    inference_network=bf.networks.FlowMatching(subnet_kwargs={"widths": (width,)*depth}),
    inference_variables=param_names,
    inference_conditions="summary_stats",
    initial_learning_rate=initial_lr,
    standardize="all"
)

history = workflow.fit_offline(train_data, batch_size=batch_size, epochs=100, validation_data=test_data)
figs = workflow.plot_default_diagnostics(test_data=test_data, num_samples=500)

Why loop over participants?

The trained network expects summary_stats as input, not raw trial data. Since each participant may have a different number of trials, we compute summary statistics per participant individually, then stack them into a single (num_participants, 23) array. subsample=False disables the training-time augmentation — here, we want the exact statistics from the observed data. The props field tells the network what fraction of the 400 possible trials were actually retained.

conditions = []
participant_ids = np.unique(data.participant).tolist()

for participant_id in participant_ids:

    particpant_df = data[data["participant"] == participant_id]

    particpant_dict = {
        "rt": particpant_df["rt"].values[None, :, None],
        "accuracy": particpant_df["accuracy"].values[None, :, None],
        "conditions": particpant_df["congruency"].values[None, :, None],
        "props": np.array([[len(particpant_df) / 400]])
    }

    conditions.append(summary_stats_subsample(**particpant_dict, subsample=False)["summary_stats"])

conditions = np.concatenate(conditions, axis=0)
num_samples = 500
samples = workflow.sample(conditions={"summary_stats": conditions}, num_samples=500, batch_size=10)

Posterior Predictive Check: For each participant, we take 10 random draws from their posterior, plug each draw back into the simulator to regenerate 400 synthetic trials, and collect everything into a long-format DataFrame. Comparing the re-simulated distributional statistics (CAFs, CDFs, \(\Delta\)-functions) against the observed data tells us whether the recovered parameters can actually reproduce the empirical patterns.

num_resim = 10
sample_idx = np.random.permutation(num_samples)[:num_resim]
rows = []

for p_idx, p in enumerate(participant_ids):
    for draw_idx, s_idx in enumerate(sample_idx):
        sample = {k: v[p_idx, s_idx, 0] for k, v in samples.items()}
        resim = simulator.experiment(**sample, num_obs=400)

        part_df = pd.DataFrame(resim)
        part_df["id"] = p
        part_df["draw_idx"] = draw_idx

        rows.append(part_df)

df_long = pd.concat(rows, ignore_index=True)
df_long.head()
caf, cdf, delta = dmc_helpers.compute_stats(df_long, id_name='id', rt='rt', congruency='conditions')
dmc_helpers.plot_stats(caf, cdf, delta, id_name='id', rt='rt', congruency='conditions')