2016-07-08 1 views
1

Je regarde l'exemple de deeplearning 4j pour classer les critiques de films selon leur sentiment. ReviewExampleDeeplearning4j: Exemple LSTM pour l'analyse du sentiment de révision

À la ligne 124-142 les tableaux N dimensions sont créés et je suis un peu incertain ce qui se passe à ces lignes:

Ligne 132:

features.put(new INDArrayIndex[]{NDArrayIndex.point(i), 
NDArrayIndex.all(), NDArrayIndex.point(j)}, vector); 

je peux l'image que .point(x) et .point(j) adresse la cellule dans le tableau, mais que fait exactement l'appel NDArrayIndex.all() ici?

Alors que la construction du tableau de fonction est plus ou moins ok ce qui se passe là-bas que je reçois totalement confus par le masque d'étiquette et cette variable lastIdx

la ligne 138 - 142

  int idx = (positive[i] ? 0 : 1); 
      int lastIdx = Math.min(tokens.size(),maxLength); 
      labels.putScalar(new int[]{i,idx,lastIdx-1},1.0); //Set label: [0,1] for negative, [1,0] for positive 
      labelsMask.putScalar(new int[]{i,lastIdx-1},1.0); //Specify that an output exists at the final time step for this example 

Le tableau de l'étiquette elle-même adressée par i, idx par exemple colonne/ligne qui est définie à 1.0 - mais je ne comprends pas vraiment comment cette information de temps-étape s'inscrit? Est-ce conventionnel que le dernier paramètre doit marquer la dernière entrée?

Alors pourquoi le labelMask utilise-t-il seulement i et non i, idx?

Merci pour les explications ou pointeur qui aident à clarifier certaines de mes questions

Répondre

0

Il est un indice par dimension. All() est un indicateur (utilisez cette dimension entière). Voir le guide de l'utilisateur nd4j: http://nd4j.org/userguide

Comme pour le 1. Cela 1 est censé être la classe pour l'étiquette là. C'est un problème de classification de texte: prenez la fenêtre des vecteurs de texte et de mot et faites en prédire la classe. Comme pour le masque d'étiquette: La prédiction d'un réseau neuronal se produit à la fin d'une séquence. Voir: http://deeplearning4j.org/usingrnns

0

écrire un test et vous le saurez.

val caractéristiques Nd4j.zeros = (2, 2, 3) val toput = Nd4j.ones (2) features.put (Array [INDArrayIndex] (NDArrayIndex.point (0), NDArrayIndex.all, NDArrayIndex. le point (1)), toput)

le résultat est [[[0,00, 1,00, 0,00],
[0,00, 1,00, 0,00]],

[[0,00, 0,00, 0,00],
[0.00, 0.00, 0.00]]] il mettra le vecteur 'toPut' aux entités.