code: public List<org.nd4j.linalg.api.buffer.DataType> calculateOutputDataTypes(List<org.nd4j.linalg.api.buffer.DataType> dataTypes){
          throw new UnsupportedOperationException("calculateOutputDataTypes() has not been implemented for " + getClass().getName());
      }
docs: Calculate the data types for the output arrays.
  Though datatypes can also be inferred from {@link #calculateOutputShape()}, this method differs in that it does not
  require the input arrays to be populated.
  This is important as it allows us to do greedy datatype inference for the entire net - even if arrays are not
  available.
  
  @param dataTypes The data types of the inputs
  @return The data types of the outputs