text: #!/usr/bin/env python3
  # -*- coding: utf-8 -*-
  """
  Created on Wed Apr 25 15:09:51 2018
  
  @author: anilosmantur
  """
  
  import numpy as np
  import matplotlib.pyplot as plt
  from cs231n.gradient_check import eval_numerical_gradient_array, eval_numerical_gradient
  from cs231n.layers import *
  
  plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots
  plt.rcParams['image.interpolation'] = 'nearest'
  plt.rcParams['image.cmap'] = 'gray'
  
  # for auto-reloading external modules
  # see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython
  
  
  def rel_error(x, y):
      """ returns relative error """
      return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))
  
  
  num_inputs = 2
  input_shape = (4, 5, 6)
  output_dim = 3
  
  input_size = num_inputs * np.prod(input_shape)
  weight_size = output_dim * np.prod(input_shape)
  
  x = np.linspace(-0.1, 0.5, num=input_size).reshape(num_inputs, *input_shape)
  w = np.linspace(-0.2, 0.3, num=weight_size).reshape(np.prod(input_shape), output_dim)
  b = np.linspace(-0.3, 0.1, num=output_dim)
  
  out, _ = affine_forward(x, w, b)
  correct_out = np.array([[ 1.49834967,  1.70660132,  1.91485297],
                          [ 3.25553199,  3.5141327,   3.77273342]])
  
  # Compare your output with ours. The error should be around 1e-9.
  print( 'Testing affine_forward function:' )
  print( 'difference: ', rel_error(out, correct_out) )