Skip to contents

Executes the compiled graph from factor_net(). For single-layer networks, this delegates directly to nmf() for maximum performance. Multi-layer networks use R-level alternating least squares.

Usage

fit(object, ...)

# S3 method for class 'factor_net'
fit(object, logger = NULL, ...)

Arguments

object

A factor_net object from factor_net().

...

Additional arguments (currently unused).

logger

Optional training_logger from training_logger() for per-iteration diagnostics (loss, norms, classifier metrics).

Value

A factor_net_result object. Access per-layer results by name (e.g. result$L1). Each layer is a list with components W, d, H, and iterations. Additional fields: n_layers, multi_modal, total_iterations, total_loss, and converged.

Examples

# \donttest{
library(Matrix)
X <- rsparsematrix(100, 50, 0.1)
inp <- factor_input(X, "X")
L1 <- inp |> nmf_layer(k = 5, name = "L1")
net <- factor_net(inputs = inp, output = L1,
                  config = factor_config(maxit = 100, seed = 42))
res <- fit(net)
res$L1$W   # m x k basis matrix
#>                [,1]         [,2]         [,3]         [,4]         [,5]
#>   [1,] 0.000000e+00 0.0000000000 1.030454e-03 0.000000e+00 0.000000e+00
#>   [2,] 0.000000e+00 0.0616560616 0.000000e+00 0.000000e+00 7.453010e-03
#>   [3,] 0.000000e+00 0.0000000000 4.349960e-04 1.517339e-03 1.028034e-03
#>   [4,] 0.000000e+00 0.0100573720 7.380882e-04 1.685843e-03 0.000000e+00
#>   [5,] 0.000000e+00 0.0003711998 0.000000e+00 0.000000e+00 1.353676e-05
#>   [6,] 0.000000e+00 0.0005722477 0.000000e+00 0.000000e+00 0.000000e+00
#>   [7,] 1.952747e-02 0.0000000000 7.566773e-04 8.061107e-04 0.000000e+00
#>   [8,] 2.028084e-01 0.0000000000 6.241964e-03 3.097859e-02 0.000000e+00
#>   [9,] 1.154036e-02 0.0000000000 1.112303e-02 8.426355e-04 0.000000e+00
#>  [10,] 0.000000e+00 0.0091978069 0.000000e+00 0.000000e+00 7.879478e-03
#>  [11,] 0.000000e+00 0.0000000000 5.990638e-04 3.545261e-03 0.000000e+00
#>  [12,] 0.000000e+00 0.0000000000 6.208698e-04 8.466421e-03 4.823000e-05
#>  [13,] 1.365103e-03 0.0000000000 3.605395e-03 0.000000e+00 0.000000e+00
#>  [14,] 2.024831e-03 0.0000000000 2.443187e-03 0.000000e+00 9.270129e-03
#>  [15,] 4.124205e-03 0.0000000000 1.898482e-02 3.333487e-03 0.000000e+00
#>  [16,] 9.902567e-03 0.0000000000 0.000000e+00 0.000000e+00 1.782501e-04
#>  [17,] 1.791677e-04 0.0000000000 7.753441e-04 0.000000e+00 0.000000e+00
#>  [18,] 2.321471e-03 0.0158665925 1.841906e-02 1.085468e-02 0.000000e+00
#>  [19,] 1.532743e-03 0.0000000000 9.935644e-02 0.000000e+00 0.000000e+00
#>  [20,] 0.000000e+00 0.0000000000 2.216948e-03 5.541713e-03 0.000000e+00
#>  [21,] 6.246541e-02 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [22,] 1.416766e-01 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [23,] 2.495357e-06 0.0000000000 0.000000e+00 0.000000e+00 6.601163e-02
#>  [24,] 9.836389e-04 0.0017403811 0.000000e+00 1.247314e-04 0.000000e+00
#>  [25,] 8.390572e-02 0.0043338882 0.000000e+00 0.000000e+00 7.045279e-04
#>  [26,] 6.041911e-05 0.0000000000 3.822215e-02 4.288298e-05 0.000000e+00
#>  [27,] 5.632829e-02 0.0000000000 6.360653e-04 0.000000e+00 0.000000e+00
#>  [28,] 2.357812e-02 0.0014507473 0.000000e+00 0.000000e+00 8.599343e-05
#>  [29,] 0.000000e+00 0.0006316115 0.000000e+00 0.000000e+00 1.136911e-03
#>  [30,] 0.000000e+00 0.0156637430 0.000000e+00 2.499007e-03 8.930485e-04
#>  [31,] 5.878906e-06 0.0000000000 4.976666e-02 3.171115e-05 0.000000e+00
#>  [32,] 0.000000e+00 0.0095451102 0.000000e+00 5.030813e-02 1.793297e-02
#>  [33,] 0.000000e+00 0.0034933200 3.976657e-04 1.713937e-03 0.000000e+00
#>  [34,] 0.000000e+00 0.0000000000 0.000000e+00 0.000000e+00 1.140312e-03
#>  [35,] 0.000000e+00 0.3034497201 2.503735e-03 0.000000e+00 0.000000e+00
#>  [36,] 0.000000e+00 0.0000000000 0.000000e+00 8.714345e-03 0.000000e+00
#>  [37,] 9.754111e-04 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [38,] 0.000000e+00 0.0000000000 1.057384e-03 7.631604e-04 0.000000e+00
#>  [39,] 6.601807e-03 0.0264717750 0.000000e+00 0.000000e+00 1.484938e-03
#>  [40,] 0.000000e+00 0.0016765465 0.000000e+00 0.000000e+00 1.712668e-01
#>  [41,] 0.000000e+00 0.0000000000 0.000000e+00 0.000000e+00 1.031047e-01
#>  [42,] 5.582851e-04 0.0000000000 1.360680e-03 5.862297e-03 1.703233e-02
#>  [43,] 8.321588e-04 0.0000000000 0.000000e+00 0.000000e+00 1.209096e-03
#>  [44,] 0.000000e+00 0.0117092049 9.858863e-04 0.000000e+00 1.256961e-03
#>  [45,] 9.418216e-03 0.0000000000 2.983864e-03 7.181383e-03 0.000000e+00
#>  [46,] 0.000000e+00 0.0000000000 2.785001e-03 2.016428e-01 0.000000e+00
#>  [47,] 0.000000e+00 0.0911588818 0.000000e+00 0.000000e+00 0.000000e+00
#>  [48,] 1.646922e-02 0.0028272639 8.960753e-04 0.000000e+00 3.046208e-03
#>  [49,] 1.250953e-03 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [50,] 0.000000e+00 0.0000000000 7.399920e-04 5.473106e-03 0.000000e+00
#>  [51,] 0.000000e+00 0.0021571312 1.695975e-03 2.595841e-03 8.242450e-05
#>  [52,] 0.000000e+00 0.0104424730 0.000000e+00 0.000000e+00 0.000000e+00
#>  [53,] 4.293825e-03 0.0000000000 2.373797e-02 0.000000e+00 0.000000e+00
#>  [54,] 3.888452e-02 0.0814012066 0.000000e+00 0.000000e+00 2.750969e-04
#>  [55,] 0.000000e+00 0.0007507273 5.730407e-05 0.000000e+00 0.000000e+00
#>  [56,] 8.364584e-03 0.0072346479 0.000000e+00 0.000000e+00 1.312891e-01
#>  [57,] 0.000000e+00 0.0000000000 4.252971e-01 3.026750e-03 0.000000e+00
#>  [58,] 2.563141e-03 0.0000000000 2.591860e-02 0.000000e+00 0.000000e+00
#>  [59,] 0.000000e+00 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [60,] 2.061079e-03 0.0000000000 9.464676e-03 1.599313e-02 2.365696e-03
#>  [61,] 6.180337e-04 0.0202411320 0.000000e+00 0.000000e+00 0.000000e+00
#>  [62,] 0.000000e+00 0.1359119564 1.571868e-02 1.365476e-02 0.000000e+00
#>  [63,] 0.000000e+00 0.0052110297 1.398290e-03 8.432158e-02 0.000000e+00
#>  [64,] 1.296039e-03 0.0636283010 0.000000e+00 0.000000e+00 0.000000e+00
#>  [65,] 1.743558e-03 0.0000000000 2.845942e-02 0.000000e+00 1.958187e-01
#>  [66,] 3.070739e-03 0.0000000000 0.000000e+00 2.805188e-01 0.000000e+00
#>  [67,] 1.077899e-04 0.0000000000 5.814002e-04 0.000000e+00 0.000000e+00
#>  [68,] 0.000000e+00 0.0275457986 0.000000e+00 1.853490e-03 0.000000e+00
#>  [69,] 5.798873e-02 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [70,] 1.116421e-05 0.0023889993 0.000000e+00 0.000000e+00 1.181424e-02
#>  [71,] 2.391254e-03 0.0000000000 7.567022e-03 4.344994e-03 3.069636e-02
#>  [72,] 0.000000e+00 0.0195184909 0.000000e+00 1.156482e-02 1.389769e-03
#>  [73,] 1.541705e-03 0.0048694280 0.000000e+00 5.889498e-04 0.000000e+00
#>  [74,] 3.785244e-03 0.0000000000 2.364538e-03 2.353488e-03 2.832819e-04
#>  [75,] 0.000000e+00 0.0054492825 0.000000e+00 1.759910e-02 0.000000e+00
#>  [76,] 0.000000e+00 0.0044460003 0.000000e+00 0.000000e+00 0.000000e+00
#>  [77,] 0.000000e+00 0.0000000000 5.150603e-04 3.815951e-03 6.634694e-06
#>  [78,] 8.951459e-02 0.0011735010 0.000000e+00 0.000000e+00 9.295357e-03
#>  [79,] 0.000000e+00 0.0000000000 1.836449e-03 5.811095e-03 2.924081e-02
#>  [80,] 0.000000e+00 0.0000000000 1.366421e-02 1.347882e-02 3.377844e-03
#>  [81,] 7.953493e-02 0.0000000000 4.774736e-03 0.000000e+00 0.000000e+00
#>  [82,] 3.202048e-04 0.0027341673 0.000000e+00 0.000000e+00 1.453072e-01
#>  [83,] 0.000000e+00 0.0000000000 1.647287e-02 0.000000e+00 0.000000e+00
#>  [84,] 7.818087e-03 0.0000000000 0.000000e+00 0.000000e+00 4.101878e-03
#>  [85,] 1.072759e-03 0.0000000000 1.095148e-02 0.000000e+00 2.408680e-03
#>  [86,] 0.000000e+00 0.0000000000 1.941690e-03 1.456437e-03 0.000000e+00
#>  [87,] 9.096641e-03 0.0000000000 2.612563e-03 0.000000e+00 0.000000e+00
#>  [88,] 1.062607e-02 0.0022297178 0.000000e+00 0.000000e+00 1.428135e-03
#>  [89,] 0.000000e+00 0.0238785949 0.000000e+00 1.000232e-02 1.076382e-02
#>  [90,] 1.010748e-02 0.0000000000 4.838797e-03 0.000000e+00 0.000000e+00
#>  [91,] 1.374784e-03 0.0000000000 0.000000e+00 2.431858e-02 0.000000e+00
#>  [92,] 0.000000e+00 0.0042183301 0.000000e+00 1.284340e-01 0.000000e+00
#>  [93,] 0.000000e+00 0.0017971682 0.000000e+00 0.000000e+00 1.114778e-03
#>  [94,] 0.000000e+00 0.0008985369 0.000000e+00 0.000000e+00 2.864802e-03
#>  [95,] 1.690875e-04 0.0000000000 5.001826e-07 0.000000e+00 1.445550e-08
#>  [96,] 0.000000e+00 0.0000000000 0.000000e+00 0.000000e+00 0.000000e+00
#>  [97,] 0.000000e+00 0.0000000000 6.708832e-03 1.420399e-02 0.000000e+00
#>  [98,] 0.000000e+00 0.0000000000 0.000000e+00 8.133600e-03 0.000000e+00
#>  [99,] 1.204958e-03 0.0000000000 2.264191e-03 0.000000e+00 3.898324e-03
#> [100,] 0.000000e+00 0.0000000000 1.214761e-01 0.000000e+00 0.000000e+00
res$L1$H   # k x n coefficient matrix
#>             [,1]      [,2]       [,3]       [,4]       [,5]        [,6]
#> [1,] 0.000000000 0.3133637 0.02455190 0.00000000 0.00000000 0.023732658
#> [2,] 0.003304654 0.0000000 0.00000000 0.00000000 0.21393582 0.000000000
#> [3,] 0.002081204 0.0000000 0.01974112 0.00000000 0.09023001 0.000000000
#> [4,] 0.002536592 0.0000000 0.00000000 0.02297432 0.00000000 0.000000000
#> [5,] 0.000000000 0.0000000 0.00000000 0.00000000 0.00000000 0.003042132
#>            [,7]        [,8]      [,9]      [,10]     [,11]        [,12]
#> [1,] 0.00000000 0.001612192 0.0000000 0.07405249 0.0000000 0.0071649216
#> [2,] 0.03996375 0.000000000 0.2650518 0.00000000 0.0000000 0.0000000000
#> [3,] 0.00000000 0.000000000 0.0000000 0.00000000 0.3059991 0.0056148912
#> [4,] 0.00000000 0.000000000 0.0000000 0.13678996 0.0000000 0.0002569857
#> [5,] 0.00000000 0.000000000 0.0000000 0.00000000 0.0000000 0.0000000000
#>             [,13]     [,14]        [,15]       [,16]        [,17]        [,18]
#> [1,] 0.0000000000 0.0000000 0.0000000000 0.023750030 0.0007021876 0.0000000000
#> [2,] 0.0069757155 0.0000000 0.0000000000 0.006918917 0.0000000000 0.0005353206
#> [3,] 0.0008593797 0.0101698 0.0006574329 0.001660225 0.0146079985 0.0000000000
#> [4,] 0.0194984879 0.0000000 0.0213009492 0.001905223 0.0005269564 0.0000000000
#> [5,] 0.0704222247 0.0000000 0.0043016155 0.000000000 0.0000000000 0.0070800413
#>           [,19]      [,20]       [,21]      [,22]      [,23]       [,24]
#> [1,] 0.01284102 0.00000000 0.000000000 0.00000000 0.00000000 0.003089325
#> [2,] 0.14807327 0.00000000 0.000000000 0.01083056 0.00000000 0.000000000
#> [3,] 0.00000000 0.07418307 0.009033334 0.00000000 0.16175728 0.000000000
#> [4,] 0.00000000 0.00000000 0.002725957 0.00000000 0.00000000 0.000000000
#> [5,] 0.00000000 0.00000000 0.000000000 0.04873477 0.08541689 0.000000000
#>            [,25]        [,26]        [,27]        [,28]        [,29]
#> [1,] 0.000000000 0.0000000000 0.0000000000 0.0309330970 0.0000000000
#> [2,] 0.000000000 0.0000000000 0.0007440202 0.0690948293 0.0190896429
#> [3,] 0.000000000 0.0000000000 0.0057136002 0.0000000000 0.0000000000
#> [4,] 0.186739951 0.0000000000 0.0000000000 0.0090100579 0.0008703012
#> [5,] 0.003520345 0.0004944381 0.0010161203 0.0001854439 0.0334837362
#>            [,30]        [,31]     [,32]       [,33]       [,34]     [,35]
#> [1,] 0.016557533 0.0000000000 0.0000000 0.000000000 0.000000000 0.0000000
#> [2,] 0.000000000 0.0506721437 0.0000000 0.005109246 0.000000000 0.0000000
#> [3,] 0.001750525 0.0001707759 0.2582564 0.001065197 0.007741696 0.0000000
#> [4,] 0.000000000 0.0000000000 0.0000000 0.000000000 0.047837377 0.0000000
#> [5,] 0.006306692 0.0000000000 0.0000000 0.002737270 0.000000000 0.1379823
#>            [,36]        [,37]       [,38]      [,39]        [,40]        [,41]
#> [1,] 0.004379692 0.0003813193 0.000000000 0.06479379 0.0000000000 0.000000e+00
#> [2,] 0.000000000 0.0005656998 0.000000000 0.00000000 0.0000000000 2.869792e-02
#> [3,] 0.000000000 0.0205035061 0.002463974 0.00000000 0.0000000000 4.970342e-05
#> [4,] 0.003271584 0.0000000000 0.008181511 0.00000000 0.0008644238 8.308122e-02
#> [5,] 0.000000000 0.0000000000 0.001372064 0.00000000 0.1111259758 0.000000e+00
#>          [,42]     [,43]      [,44]        [,45]       [,46]        [,47]
#> [1,] 0.0000000 0.3148726 0.00000000 0.0287944712 0.000000000 0.000000e+00
#> [2,] 0.0000000 0.0195334 0.04451523 0.0000000000 0.066388063 0.000000e+00
#> [3,] 0.0000000 0.0000000 0.00000000 0.0000000000 0.000000000 4.555781e-05
#> [4,] 0.0000000 0.0000000 0.02533025 0.0000000000 0.008236138 3.220422e-02
#> [5,] 0.4703252 0.0000000 0.00000000 0.0006600497 0.007394758 5.915018e-04
#>            [,48]     [,49]       [,50]
#> [1,] 0.045536675 0.0000000 0.008890299
#> [2,] 0.000000000 0.0000000 0.000000000
#> [3,] 0.005644318 0.0000000 0.000000000
#> [4,] 0.023418272 0.3581707 0.004268473
#> [5,] 0.000000000 0.0000000 0.003806316
# }