Es bastante difícil con los modelos que trae la toolbox construir la variante tipo Xception, pero con una cierta complejidad sí se puede hacer una variante Inception. Vamos a verlo en un ejemplo de reconocimiento de dígitos. Puedes probar los siguientes comandos:
% creamos una primera cadena lineal que sólo tiene una de las ramas de la variante capas= [ %entrada imageInputLayer([28 28 1],'Name','ent') %convolución 2D convolution2dLayer(ancho1,numproc1,'Name','conv_1') reluLayer('Name','relu_1') %primera rama de variante convolution2dLayer(ancho21,numproc21,'Padding','same','Name','conv_2_1') reluLayer('Name','relu_2_1') %aquí se unirán las ramas depthConcatenationLayer(numramas,'Name','union') %otra convolución convolution2dLayer(ancho3,numproc3,'Name','conv_3') reluLayer('Name','relu_3') %reducción averagePooling2dLayer(anchored,'Stride',anchored,'Name','prom3') %paso a parte no convolutiva-capa oculta fullyConnectedLayer(numoc,'Name','comp1') reluLayer('Name','relu_comp') %salida fullyConnectedLayer(10,'Name','comp2') softmaxLayer('Name','sal') %para usar error entrópico classificationLayer('Name','errorsal')]; %construimos el grafo de red inicial grafo= layerGraph(capas); %preparamos las otras ramas y las añadimos, de momento desconectadas rama2 = [convolution2dLayer(ancho22,numproc22,'Padding','same','Name','conv_2_2') reluLayer('Name','relu_2_2')]; grafo = addLayers(grafo,rama2); %lo mismo el resto de las ramas ... %las conectamos grafo= connectLayers(grafo,'relu_1','conv_2_2'); grafo= connectLayers(grafo,'relu_2_2','union/in2'); %lo mismo las demás ramas ... % vistazo de comprobación plot(grafo) %cargamos los datos [Entaj,Salaj] = digitTrain4DArrayData; [Entpru,Salpru] = digitTest4DArrayData; %configuramos ajuste y lo hacemos opaj = trainingOptions('sgdm', ... 'MaxEpochs',100, ... 'Shuffle','every-epoch', ... 'ValidationData',{Entpru,Salpru}, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress'); red = trainNetwork(Entaj,Salaj,grafo,opaj); %la probamos Salred = classify(red,Entpru); precis = mean(Salred == Salpru)