code: func (co *Context) DivisiveNormalizationForward(normDesc *LRN, mode DivNormMode, alpha float64, xDesc *TensorDescriptor, x Memory, means Memory, temp Memory, temp2 Memory, beta float64, yDesc *TensorDescriptor, y Memory) error {
  	// DOUBLECHECK: "cudnnDivisiveNormalizationForward" returns Memory type in Parameter 11
  	var alphaC, betaC unsafe.Pointer
  	switch xDesc.dataType {
  	case Float, Half:
  		var alphaF, betaF C.float
  		alphaF = C.float(float32(alpha))
  		betaF = C.float(float32(beta))
  		alphaC = unsafe.Pointer(&alphaF)
  		betaC = unsafe.Pointer(&betaF)
  	case Double:
  		var alphaF, betaF C.double
  		alphaF = C.double(alpha)
  		betaF = C.double(beta)
  		alphaC = unsafe.Pointer(&alphaF)
  		betaC = unsafe.Pointer(&betaF)
  	default:
  		return errors.Errorf("Unsupported data type: %v", xDesc.dataType)
  	}
  	// call cudnnDivisiveNormalizationForward
  	return result(C.cudnnDivisiveNormalizationForward(co.internal, normDesc.internal, mode.C(), alphaC, xDesc.internal, x.Pointer(), means.Pointer(), temp.Pointer(), temp2.Pointer(), betaC, yDesc.internal, y.Pointer()))
  }
docs: // DivisiveNormalizationForward performs the forward spatial DivisiveNormalization layer computation. It divides every value in a layer by the standard deviation of it's spatial neighbors as described in `What is the Best Multi-Stage Architecture for Object Recognition`, Jarrett 2009, Local Contrast Normalization Layer section. Note that Divisive Normalization only implements the x/max(c, sigma_x) portion of the computation, where sigma_x is the variance over the spatial neighborhood of x. The full LCN (Local Contrastive Normalization) computation can be implemented as a two-step process: