code: protected void computeGaussianWeights( int width ) {
  		// desired output (gaussian shaped), bandwidth proportional to target size
  		double output_sigma = Math.sqrt(width*width) * output_sigma_factor;
  
  		double left = -0.5/(output_sigma*output_sigma);
  
  		int radius = width/2;
  
  		for( int y = 0; y < gaussianWeight.height; y++ ) {
  			int index = gaussianWeight.startIndex + y*gaussianWeight.stride;
  
  			double ry = y-radius;
  
  			for( int x = 0; x < width; x++ ) {
  				double rx = x-radius;
  
  				gaussianWeight.data[index++] = Math.exp(left * (ry * ry + rx * rx));
  			}
  		}
  
  		fft.forward(gaussianWeight,gaussianWeightDFT);
  	}
docs: Computes the weights used in the gaussian kernel
  
  This isn't actually symmetric for even widths.  These weights are used has label in the learning phase.  Closer
  to one the more likely it is the true target.  It should be a peak in the image center.  If it is not then
  it will learn an incorrect model.