_createIndexMap(indicesForReshaped, is2DReshaped) {
    if (this.indexMap) {
      return
    }

    const indices = new Tensor(indicesForReshaped.data, indicesForReshaped.shape, { type: Int32Array })

    this.indexMap = new Tensor([], this.outputShape, { type: Int32Array })

    const sliceStart =
      this.dataFormat === 'channels_first'
        ? [0, this.cropping[0][0], this.cropping[1][0]]
        : [this.cropping[0][0], this.cropping[1][0], 0]
    const sliceEnd =
      this.dataFormat === 'channels_first'
        ? [this.inputShape[0], this.inputShape[1] - this.cropping[0][1], this.inputShape[2] - this.cropping[1][1]]
        : [this.inputShape[0] - this.cropping[0][1], this.inputShape[1] - this.cropping[1][1], this.inputShape[2]]

    ops.assign(this.indexMap.tensor, indices.tensor.hi(...sliceEnd).lo(...sliceStart))

    if (is2DReshaped) {
      this.indexMap.reshapeTo2D()
    } else {
      this.indexMap.reshapeTo2DSquare()
    }
    this.indexMap.createGLTexture({ type: '2d', format: 'int' })
  }
Creates row/col index mappings to map input texture to output texture

@param {Object} indicesForReshaped
@param {boolean} is2DReshaped