code: def create_network(batch_size, update_freq):
      
      import logging
      head = '%(asctime)-15s %(message)s'
      logging.basicConfig(level=logging.INFO, format=head)
  
      train_data = np.random.randint(1, 5, [1000, 2])
      weights = np.array([1.0, 2.0])
      train_label = train_data.dot(weights)
  
      di = mx.io.NDArrayIter(train_data, train_label, batch_size=batch_size, shuffle=True, label_name='lin_reg_label')
      X = mx.sym.Variable('data')
      Y = mx.symbol.Variable('lin_reg_label')
      fully_connected_layer = mx.sym.FullyConnected(data=X, name='fc1', num_hidden=1)
      lro = mx.sym.LinearRegressionOutput(data=fully_connected_layer, label=Y, name="lro")
  
      mod = SVRGModule(
          symbol=lro,
          data_names=['data'],
          label_names=['lin_reg_label'], update_freq=update_freq, logger=logging
      )
  
      return di, mod
docs: Create a linear regression network for performing SVRG optimization.
      Parameters
      ----------
      batch_size: int
          Size of data split
      update_freq: int
          Update Frequency for calculating full gradients
  
      Returns
      ----------
      di: mx.io.NDArrayIter
          Data iterator
      update_freq: SVRGModule
          An instance of SVRGModule for performing SVRG optimization