docs: @Override
      public InputType getOutputType(InputType... inputType) throws InvalidKerasConfigurationException {
          if (inputType.length > 1)
              throw new InvalidKerasConfigurationException(
                      "Keras Convolution layer accepts only one input (received " + inputType.length + ")");
          InputType.InputTypeConvolutional convType = (InputType.InputTypeConvolutional) inputType[0];
  
          // Override input/output shape and input channels dynamically. This works since getOutputType will always
          // be called when initializing the model.
          ((LocallyConnected2D) this.layer).setInputSize(new int[] {(int) convType.getHeight(),(int) convType.getWidth()});
          ((LocallyConnected2D) this.layer).setNIn(convType.getChannels());
          ((LocallyConnected2D) this.layer).computeOutputSize();
  
          InputPreProcessor preprocessor = getInputPreprocessor(inputType[0]);
          if (preprocessor != null) {
              return this.getLocallyConnected2DLayer().getOutputType(-1, preprocessor.getOutputType(inputType[0]));
          }
          return this.getLocallyConnected2DLayer().getOutputType(-1, inputType[0]);
      }