Hi, I'm trying to create a custom intermediate layer that can split up data. When I use checkLayer to validate the functionality it throws the error: "Incorrect number of output arguments for 'predict' in Layer splitDataLayer. Expected to have 1, but instead it has 4." although I've set the number of Outputs to 4 in the constructor. classdef splitDataLayer < nnet.layer.Layer methods function obj = splitDataLayer(name) obj.Name = name; obj.numOutputs = 4; obj.OutputNames = {'out1','out2','out3','out4'}; end function [Z1, Z2, Z3, Z4] = predict(~, X) Z1 = X(1, :, :, :); Z2 = X(2, :, :, :); Z3 = X(3, :, :, :); Z4 = X(4, :, :, :); end function [dLdX] = backward(~,~,~,~,~,~,dLdZ1,dLdZ2,dLdZ3,dLdZ4,~) dLdX = cat(1, dLdZ1,... dLdZ2,... dLdZ3,... dLdZ4); end end end As can be seen above, both the number of outputs as well as the output matrix in the predict function have been set correctly. So I don't know what could be wrong about the code and cause that error.
Prashant Kumar answered .
2025-11-20
layer = splitDataLayer('test');
validInputSize = [4 5 20 4]; % Some arbitrary dimensions
checkLayer(layer,validInputSize,'ObservationDimension',4)
Running nnet.checklayer.TestCase
.......... .......... ....
Done nnet.checklayer.TestCase
__________
Test Summary:
24 Passed, 0 Failed, 0 Incomplete, 0 Skipped.
Time elapsed: 1.3818 seconds.