9

Quelqu'un devrait ajouter "net #" comme étiquette. Je suis en train d'améliorer mon réseau de neurones dans Azure Machine Learning Studio en le transformant en un réseau de neurones de convolution en utilisant ce tutoriel:Comment créer un réseau neuronal convolutif dans Azure Machine Learning?

https://gallery.cortanaintelligence.com/Experiment/Neural-Network-Convolution-and-pooling-deep-net-2

Les différences entre moi et le tutoriel est que je suis en train de faire une régression avec 35 caractéristiques et 1 étiquette et ils font la classification avec des fonctionnalités 28x28 et 10 étiquettes.

Je commence par l'exemple de base et 2 et les faire fonctionner avec:

input Data [35]; 

hidden H1 [100] 
    from Data all; 

hidden H2 [100] 
    from H1 all; 

output Result [1] linear 
    from H2 all; 

Maintenant, la transformation de convolution je comprends mal. Dans le tutoriel et la documentation ici: https://docs.microsoft.com/en-us/azure/machine-learning/machine-learning-azure-ml-netsharp-reference-guide il ne mentionne pas comment les valeurs de tuple de noeud sont calculées pour les calques cachés. Le tutoriel dit:

hidden C1 [5, 12, 12] 
    from Picture convolve { 
    InputShape = [28, 28]; 
    KernelShape = [ 5, 5]; 
    Stride  = [ 2, 2]; 
    MapCount = 5; 
    } 

hidden C2 [50, 4, 4] 
    from C1 convolve { 
    InputShape = [ 5, 12, 12]; 
    KernelShape = [ 1, 5, 5]; 
    Stride  = [ 1, 2, 2]; 
    Sharing  = [ F, T, T]; 
    MapCount = 10; 
    } 

On dirait que le [5, 12, 12] et [50,4,4] pop de nulle part avec le KernalShape, Stride et MapCount. Comment savoir quelles valeurs sont valables pour mon exemple? J'ai essayé d'utiliser les mêmes valeurs, mais cela n'a pas fonctionné et j'ai un sentiment puisqu'il a une entrée [28,28] et j'ai un [35], j'ai besoin de tuples avec 2 entiers non 3.

I juste essayé avec des valeurs aléatoires qui semblent être en corrélation avec le tutoriel:

const { T = true; F = false; } 

input Data [35]; 

hidden C1 [7, 23] 
    from Data convolve { 
    InputShape = [35]; 
    KernelShape = [7]; 
    Stride  = [2]; 
    MapCount = 7; 
    } 

hidden C2 [200, 6] 
    from C1 convolve { 
    InputShape = [ 7, 23]; 
    KernelShape = [ 1, 7]; 
    Stride  = [ 1, 2]; 
    Sharing  = [ F, T]; 
    MapCount = 14; 
    } 

hidden H3 [100] 
    from C2 all; 

output Result [1] linear 
    from H3 all; 

il semble à l'heure actuelle impossible de déboguer, car le seul code d'erreur Azure machine Learning studio donne toujours est:

Exception":{"ErrorId":"LibraryException","ErrorCode":"1000","ExceptionType":"ModuleException","Message":"Error 1000: TLC library exception: Exception of type 'Microsoft.Numerics.AFxLibraryException' was thrown.","Exception":{"Library":"TLC","ExceptionType":"LibraryException","Message":"Exception of type 'Microsoft.Numerics.AFxLibraryException' was thrown."}}}Error: Error 1000: TLC library exception: Exception of type 'Microsoft.Numerics.AFxLibraryException' was thrown. Process exited with error code -2 

Enfin ma configuration est Azure Machine Learning Setup

Merci pour votre aide!

Répondre

1

La définition de réseau correct pour l'entrée d'une longueur de 35 colonne avec les noyaux et les progrès seront donnés suivantes:

const { T = true; F = false; } 

input Data [35]; 

hidden C1 [7, 15] 
    from Data convolve { 
    InputShape = [35]; 
    KernelShape = [7]; 
    Stride  = [2]; 
    MapCount = 7; 
    } 

hidden C2 [14, 7, 5] 
    from C1 convolve { 
    InputShape = [ 7, 15]; 
    KernelShape = [ 1, 7]; 
    Stride  = [ 1, 2]; 
    Sharing  = [ F, T]; 
    MapCount = 14; 
    } 

hidden H3 [100] 
    from C2 all; 

output Result [1] linear 
    from H3 all; 

d'abord, le C1 = [7,15]. La première dimension est simplement le MapCount. Pour la deuxième dimension, la forme du noyau définit la longueur de la "fenêtre" utilisée pour balayer les colonnes d'entrée, et la foulée définit combien elle se déplace à chaque étape. Ainsi, les fenêtres du noyau couvriraient les colonnes 1-7, 3-9, 5-11, ..., 29-35, ce qui donnerait la deuxième dimension de 15 lorsque vous additionnez les fenêtres.

Ensuite, C2 = [14,7,5]. La première dimension est encore le MapCount. Pour la deuxième et la troisième dimension, la "fenêtre" du noyau 1 par 7 doit couvrir la taille d'entrée de 7 par 15, en utilisant les étapes de 1 et 2 le long des dimensions correspondantes.

Notez que vous pouvez spécifier une forme de couche masquée C2 de [98,5] ou même [490] si vous souhaitez aplatir les sorties.