?>Array ( [lang] => fr [id] => 117 )
Scénario de test & Cas d'usage
Aucune donnée n'est nécessaire. Ce scénario se concentre sur la capacité de `addLayer` à construire un graphe de calcul non séquentiel et à gérer le partage de poids entre les couches.
| 1 | /* Pas de données requises. Le test porte sur la construction d'une architecture complexe. */ |
| 1 | PROC CAS; |
| 2 | DEEPLEARN.buildModel / model={name='reseau_siamois', replace=true}, type='CNN'; |
| 3 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='signature_A', layer={type='input', nchannels=1, width=105, height=105}; |
| 4 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='signature_B', layer={type='input', nchannels=1, width=105, height=105}; |
| 5 | QUIT; |
| 1 | PROC CAS; |
| 2 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='conv1_A', layer={type='convolution', nFilters=64, width=10, act='relu'}, srcLayers={'signature_A'}; |
| 3 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='pool1_A', layer={type='pooling', width=2, pool='max'}, srcLayers={'conv1_A'}; |
| 4 | QUIT; |
| 1 | PROC CAS; |
| 2 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='conv1_B', layer={type='convolution', nFilters=64, width=10, act='relu'}, srcLayers={'signature_B'}, sharingWeights='conv1_A'; |
| 3 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='pool1_B', layer={type='pooling', width=2, pool='max'}, srcLayers={'conv1_B'}, sharingWeights='pool1_A'; |
| 4 | QUIT; |
| 1 | PROC CAS; |
| 2 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='concat', layer={type='concat'}, srcLayers={'pool1_A', 'pool1_B'}; |
| 3 | QUIT; |
| 1 | PROC CAS; |
| 2 | DEEPLEARN.addLayer / modelTable={name='reseau_siamois'}, name='sortie_similarite', layer={type='output', n=1, act='sigmoid'}, srcLayers={'concat'}; |
| 3 | QUIT; |
La structure du modèle 'reseau_siamois' doit être un graphe non linéaire. Il doit contenir deux branches parallèles partant de 'signature_A' et 'signature_B'. Les couches 'conv1_B' et 'pool1_B' doivent indiquer qu'elles partagent leurs poids avec 'conv1_A' et 'pool1_A' respectivement. La couche 'concat' doit avoir deux couches parentes ('pool1_A', 'pool1_B'). Le test réussit si cette architecture complexe est créée sans erreur.