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.
Arguments
- object
A
factor_netobject fromfactor_net().- ...
Additional arguments (currently unused).
- logger
Optional
training_loggerfromtraining_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
# }