class_docstr: Neural Network. Deep Learning base model.
  
  Parameters:
  -----------
  optimizer: class
      The weight optimizer that will be used to tune the weights in order of minimizing
      the loss.
  loss: class
      Loss function used to measure the model's performance. SquareLoss or CrossEntropy.
  validation: tuple
      A tuple containing validation data and labels (X, y)
class_docstr_tok: ["Neural","Network",".","Deep","Learning","base","model",".","Parameters",":","--","--","--","--","--","-","optimizer",":","class","The","weight","optimizer","that","will","be","used","to","tune","the","weights","in","order","of","minimizing","the","loss",".","loss",":","class","Loss","function","used","to","measure","the","model","'s","performance",".","SquareLoss","or","CrossEntropy",".","validation",":","tuple","A","tuple","containing","validation","data","and","labels","(","X",",","y",")"]
docstr: Propagate the gradient 'backwards' and update the weights in each layer 
docstr_tok: ["Propagate","the","gradient","'backwards","'","and","update","the","weights","in","each","layer"]
code: def _backward_pass(self, loss_grad):
      """Propagate the gradient 'backwards' and update the weights in each layer"""
      for layer in reversed(self.layers):
          loss_grad = layer.backward_pass(loss_grad)
  
file_path: ML-From-Scratch/mlfromscratch/deep_learning/neural_network.py
imports: from __future__ import print_function, division
  from terminaltables import AsciiTable
  import numpy
  import progressbar
  from mlfromscratch.utils import batch_iterator
  from mlfromscratch.utils.misc import bar_widgets
label_desc: Use image node_id 8 for calling the NeuralNetwork obj's underlying member method code with example usage: obj._backward_pass(loss_grad) without return types