code: def test_linear_zeros(backend_default, basic_linargs, deltas_buffer):
      # basic sanity check with 0 weights random inputs
      nin, nout, batch_size = basic_linargs
      NervanaObject.be.bsz = batch_size
  
      dtypeu = np.float32
  
      init_unif = Uniform(low=0.0, high=0.0)
      layer = Linear(nout=nout, init=init_unif)
      inp = layer.be.array(dtypeu(np.random.random((nin, batch_size))))
      layer.configure(nin)
      layer.prev_layer = True  # Hack to force delta buffer allocation
      layer.allocate()
  
      layer.allocate_deltas(deltas_buffer)
      deltas_buffer.allocate_buffers()
      layer.set_deltas(deltas_buffer)
  
      out = layer.fprop(inp).get()
  
      assert np.min(out) == 0.0 and np.max(out) == 0.0
  
      err = dtypeu(np.zeros((nout, batch_size)))
      deltas = layer.bprop(layer.be.array(err)).get()
      assert np.min(deltas) == 0.0 and np.max(deltas) == 0.0
  
      dw = layer.dW.get()
      assert np.min(dw) == 0.0 and np.max(dw) == 0.0
  
      return
  
file_path: neon/tests/test_linear_layer.py
imports: import itertools
  import numpy
  from neon import NervanaObject
  from neon.initializers.initializer import Uniform
  from neon.layers.layer import Linear
  from utils import allclose_with_out
label_desc: Use image node_id 2 for calling a global function with example usage: test_linear_zeros(backend_default, basic_linargs, deltas_buffer) without return types