J'essaye de créer une fonction me permettant de modéliser et prédire sur le jeu de données MNIST.

Le but est d'avoir une fonction qui me permet d'utiliser outer sur plusieurs paramètres.
Dans cette fonction, on utilise une seconde fonction qui est évaluée pour chaque combinaison de paramètre.

J'aimerai alors utiliser la fonction parallelSVM pour optimiser les temps de calculs.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
library(parallelSVM)
library(parallel)
list_args <- Vectorize(function(a,b) c(as.list(a),as.list(b)), 
                   SIMPLIFY = FALSE)
make_args_mtx <- function(alist){
    Reduce(function(x,y) outer(x,y,list_args),alist)
}
multi.outer <- function(f,...){
    args <- make_args_mtx(list(...))
    res <- apply(args,
                 1:length(dim(args)),
                 function(a) do.call(f,a[[1]]))
    return(res)
}
cr <- 2
optim.svm <- function(a,b,c,d,e){
    svmrad <- parallelSVM(x=Xfinal, y=Y, numberCores=cr,kernel=a,probability=TRUE, gamma=b, coef0=c, degree=d, cost=e)
    pred.svm <- predict.parallelSVM(svmrad, newdata=testreduced,decision.values=T)
    taux <- sum(pred.svm != test[,1]) / nrow(test)
    return(taux)
}
Mais quand j'essaye d'utiliser les fonctions, j'ai toujours la même erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
optim.svm('linear',0.05,0.2,2,50)
resultat <- multi.outer(optim.svm,
                        a=c("linear","polynomial","radial","sigmoid"),
                        b=seq(0.00,0.1,0.05),
                        c=seq(0,0.3,0.3),
                        d=seq(2,4,2),
                        e=seq(0,100,50))
Les deux fonctions donnent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Error in { : task 1 failed - "objet 'd' introuvable"
Je sais que parallelSVM n'a pas besoin de stocker au préalable les paramètres dans chaque CPU utilisée mais qu'il les prend dans l'environnement global.

J'ai testé d'utiliser get("a",environment()) à la place des paramètres mais rien ne change Quelqu'un pourrait-il m'aider s'il vous plaît?

EDIT : JE me suis aperçue ne pas avoir mis comment trouver Xfinal et testreduced

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
X <- train[,-1]
Y <- train[,1]
Xreduced <- X/255
Xcov <- cov(Xreduced)
pcaX <- prcomp(Xcov)
ev <- pcaX$sdev^2
head(cumsum(ev/sum(ev)), 100)
nbaxes <- 58
dim(as.matrix(Xreduced))
dim(pcaX$rotation[,1:nbaxes])
Xfinal <- as.matrix(Xreduced) %*% pcaX$rotation[,1:nbaxes]
Y <- class.ind(Y)
testreduced <- test[,-1]/255
testreduced <- as.matrix(testreduced) %*% pcaX$rotation[,1:nbaxes]