# Quickstart: from data to prediction in ~10 lines

The shortest possible path with ggmlR: take a built-in dataset, train a neural network, and predict — using only the core Keras-like API, no tidymodels or mlr3. (For those ecosystems see the tidymodels and mlr3 vignettes.)

    library(ggmlR)

    x <- scale(as.matrix(iris[, 1:4]))            # 4 numeric features
    y <- model.matrix(~ Species - 1, iris)        # one-hot, 3 classes

    model <- ggml_model_sequential() |>
      ggml_layer_dense(16L, activation = "relu", input_shape = 4L) |>
      ggml_layer_dense(3L,  activation = "softmax") |>
      ggml_compile(optimizer = "adam", loss = "categorical_crossentropy")

    model <- ggml_fit(model, x, y, epochs = 100L, verbose = 0L)

    pred  <- ggml_predict(model, x)               # [150 x 3] class probabilities
    acc   <- mean(max.col(pred) == as.integer(iris$Species))
    cat(sprintf("accuracy: %.3f\n", acc))

That’s it — load data, stack layers, `ggml_compile()`, `ggml_fit()`, `ggml_predict()`. ggmlR runs on the GPU via Vulkan automatically when available and falls back to the CPU otherwise; call `ggml_model_backend(model)` to see which backend was actually used.

## Next steps

- Keras-like API vignette — full sequential & functional models, layers, callbacks, save/load.
- Autograd engine vignette — PyTorch-style dynamic graphs (`ag_*`).
- tidymodels / mlr3 vignettes — use ggmlR as an engine/learner inside those ecosystems.
- GPU / Vulkan vignette — device selection and performance.