?>Array ( [lang] => es [id] => 114 )
Scénario de test & Cas d'usage
No se requieren datos para la construcción del modelo. La red tendría dos entradas, una para la firma de referencia y otra para la firma a verificar.
| 1 | %put NOTA: La arquitectura del modelo se define con dos capas de entrada para manejar pares de imágenes.; |
| 1 | PROC CAS; |
| 2 | DEEPLEARN.buildModel / model={name='Red_Siamesa', replace=true}; |
| 3 | DEEPLEARN.addLayer / model='Red_Siamesa' name='Input_Ref' layer={type='input', nchannels=1, width=224, height=224}; |
| 4 | DEEPLEARN.addLayer / model='Red_Siamesa' name='Input_New' layer={type='input', nchannels=1, width=224, height=224}; |
| 5 | RUN; |
| 1 | DEEPLEARN.addLayer / |
| 2 | model='Red_Siamesa' |
| 3 | name='Conv1_A' |
| 4 | layer={type='convolution', nFilters=16, width=5, height=5, act='relu'} |
| 5 | srcLayers={'Input_Ref'}; |
| 6 | RUN; |
| 1 | DEEPLEARN.addLayer / |
| 2 | model='Red_Siamesa' |
| 3 | name='Conv1_B' |
| 4 | sharingWeights='Conv1_A' |
| 5 | layer={type='convolution', nFilters=16, width=5, height=5, act='relu'} |
| 6 | srcLayers={'Input_New'}; |
| 7 | RUN; |
| 1 | DEEPLEARN.addLayer / model='Red_Siamesa' name='Pool1_A' layer={type='pooling', pool='max', width=2, height=2} srcLayers={'Conv1_A'}; |
| 2 | DEEPLEARN.addLayer / model='Red_Siamesa' name='Pool1_B' sharingWeights='Pool1_A' layer={type='pooling', pool='max', width=2, height=2} srcLayers={'Conv1_B'}; |
| 3 | RUN; |
| 1 | DEEPLEARN.addLayer / |
| 2 | model='Red_Siamesa' |
| 3 | name='Concat' |
| 4 | layer={type='concat'} |
| 5 | srcLayers={'Pool1_A', 'Pool1_B'}; |
| 6 | RUN; |
| 1 | DEEPLEARN.addLayer / |
| 2 | model='Red_Siamesa' |
| 3 | name='Similarity_Output' |
| 4 | layer={type='fullconnect', n=1, act='sigmoid'} |
| 5 | srcLayers={'Concat'}; |
| 6 | RUN; |
| 7 | QUIT; |
Se crea un modelo 'Red_Siamesa' con una arquitectura de dos ramas. La verificación clave es que la tabla del modelo especifique que 'Conv1_B' comparte pesos con 'Conv1_A', y 'Pool1_B' con 'Pool1_A'. Las dos ramas deben converger correctamente en la capa 'Concat'. El escenario valida el uso avanzado de `addLayer` para construir redes no secuenciales y con pesos compartidos.