code: def test_lstm_nparams_hid_init_layer():
      # test that you can see layers through hid_init
      l_inp = InputLayer((2, 2, 3))
      l_inp_h = InputLayer((2, 5))
      l_inp_h_de = DenseLayer(l_inp_h, 7)
      l_inp_cell = InputLayer((2, 5))
      l_inp_cell_de = DenseLayer(l_inp_cell, 7)
      l_lstm = LSTMLayer(
          l_inp, 7, hid_init=l_inp_h_de, cell_init=l_inp_cell_de
      )
  
      # directly check the layers can be seen through hid_init
      layers_to_find = [
          l_inp,
          l_inp_h,
          l_inp_h_de,
          l_inp_cell,
          l_inp_cell_de,
          l_lstm,
      ]
      assert lasagne.layers.get_all_layers(l_lstm) == layers_to_find
  
      # 3*n_gates + 4
      # the 3 is because we have  hid_to_gate, in_to_gate and bias for each gate
      # 4 is for the W and b parameters in the two DenseLayer layers
      assert (
          len(lasagne.layers.get_all_params(l_lstm, trainable=True))
          == 19
      )
  
      # GRU bias params(3) + Dense bias params(1) * 2
      assert (
          len(
              lasagne.layers.get_all_params(l_lstm, regularizable=False)
          )
          == 6
      )
  
imports: import pytest
  from lasagne.layers import RecurrentLayer, LSTMLayer, CustomRecurrentLayer
  from lasagne.layers import InputLayer, DenseLayer, GRULayer, Gate, Layer
  from lasagne.layers import helper
  import theano
  import theano.tensor
  import numpy
  import lasagne
  from mock import Mock
label_desc: Use image node_id 28 for calling a global function with example usage: test_lstm_nparams_hid_init_layer() without return types