code: @Override
      public INDArray appendBias(INDArray... vectors) {
          Preconditions.checkArgument(vectors != null && vectors.length > 0, "vectros must be not null and have at least one element");
          int size = 0;
          for (INDArray vector : vectors) {
              size += vector.rows();
              Preconditions.checkArgument(vectors[0].dataType() == vector.dataType(), "appendBias: all arrays must have same type");
          }
  
  
          INDArray result = Nd4j.create(vectors[0].dataType(), size + 1, vectors[0].columns());
          int index = 0;
          for (INDArray vector : vectors) {
              INDArray put = toFlattened(vector, Nd4j.ones(vector.dataType(), 1));
              result.put(new INDArrayIndex[] {NDArrayIndex.interval(index, index + vector.rows() + 1),
                              NDArrayIndex.interval(0, vectors[0].columns())}, put);
              index += vector.rows();
          }
  
          return result;
      }
docs: Merge the vectors and append a bias.
  Each vector must be either row or column vectors.
  An exception is thrown for inconsistency (mixed row and column vectors)
  
  @param vectors the vectors to merge
  @return the merged ndarray appended with the bias