docs: @Override
      public void setWeights(Map<String, INDArray> weights) throws InvalidKerasConfigurationException {
          this.weights = new HashMap<>();
          if (weights.containsKey(conf.getKERAS_PARAM_NAME_W())) {
              INDArray kerasParamValue = weights.get(conf.getKERAS_PARAM_NAME_W());
              INDArray paramValue;
              switch (this.getDimOrder()) {
                  case TENSORFLOW:
                      paramValue = kerasParamValue.permute(2, 1, 0);
                      paramValue = paramValue.reshape(
                              paramValue.size(0), paramValue.size(1),
                              paramValue.size(2), 1);
                      break;
  
                  case THEANO:
                      paramValue = kerasParamValue.permute(2, 1, 0);
                      paramValue = paramValue.reshape(
                              paramValue.size(0), paramValue.size(1),
                              paramValue.size(2), 1).dup();
                      for (int i = 0; i < paramValue.tensorsAlongDimension(2, 3); i++) {
                          INDArray copyFilter = paramValue.tensorAlongDimension(i, 2, 3).dup();
                          double[] flattenedFilter = copyFilter.ravel().data().asDouble();
                          ArrayUtils.reverse(flattenedFilter);
                          INDArray newFilter = Nd4j.create(flattenedFilter, copyFilter.shape());
                          INDArray inPlaceFilter = paramValue.tensorAlongDimension(i, 2, 3);
                          inPlaceFilter.muli(0).addi(newFilter);
                      }
                      break;
                  default:
                      throw new InvalidKerasConfigurationException("Unknown keras backend " + this.getDimOrder());
              }
  
              this.weights.put(ConvolutionParamInitializer.WEIGHT_KEY, paramValue);
          } else
              throw new InvalidKerasConfigurationException(
                      "Parameter " + conf.getKERAS_PARAM_NAME_W() + " does not exist in weights");
  
          if (hasBias) {
              if (weights.containsKey(conf.getKERAS_PARAM_NAME_B()))
                  this.weights.put(ConvolutionParamInitializer.BIAS_KEY, weights.get(conf.getKERAS_PARAM_NAME_B()));
              else
                  throw new InvalidKerasConfigurationException(
                          "Parameter " + conf.getKERAS_PARAM_NAME_B() + " does not exist in weights");
          }
          removeDefaultWeights(weights, conf);
      }