R中keras layer_dense的稀疏矩阵输入

sis*_*nts 5 r machine-learning sparse-matrix keras

编辑torch for R也对可能性持开放态度。

使用 keras R API 时,如何dgCMatrix将 R 中 a 的列作为 a 的输入?layer_dense

我的数据太大,无法考虑将其从稀疏强制为密集,并且将小块强制为密集以进行小批量更新的效率太低。

最小可重现示例:

library(Matrix)
library(keras)
library(reticulate)
library(magrittr)

inputs <- rsparsematrix(10000, 1000, 0.1)
targets <- keras::to_categorical(sample(0:9, 1000, replace = T), num_classes = 10)

model <- keras_model_sequential() %>%
  layer_dense(units = 100, activation = "relu", input_shape = nrow(inputs)) %>%
  layer_dense(units = 50, activation = "relu") %>%
  layer_dense(units = ncol(targets), activation = "softmax")

compile(model,
        loss = "categorical_crossentropy",
        optimizer = optimizer_adam(),
        metrics = c("accuracy"))

fit(model, t(as.matrix(inputs)), targets, epochs = 10, batch_size = 32)
Run Code Online (Sandbox Code Playgroud)