class_docstr: A sequence of layers of a continuous-variable quantum neural network,
  as specified in `Killoran et al. (2019) <https://doi.org/10.1103/PhysRevResearch.1.033063>`_.
  
  The layer consists
  of interferometers, displacement and squeezing gates mimicking the linear transformation of
  a neural network in the x-basis of the quantum system, and uses a Kerr gate
  to introduce a 'quantum' nonlinearity.
  
  The layers act on the :math:`M` modes given in ``wires``,
  and include interferometers of :math:`K=M(M-1)/2` beamsplitters. The different weight parameters
  contain the weights for each layer. The number of layers :math:`L` is therefore derived
  from the first dimension of ``weights``.
  
  This example shows a 4-mode CVNeuralNet layer with squeezing gates :math:`S`, displacement gates :math:`D` and
  Kerr gates :math:`K`. The two big blocks are interferometers of type
  :mod:`pennylane.Interferometer`:
  
  .. figure:: ../../_static/layer_cvqnn.png
      :align: center
      :width: 60%
      :target: javascript:void(0);
  
  .. note::
     The CV neural network architecture includes :class:`~pennylane.ops.Kerr` operations.
     Make sure to use a suitable device, such as the :code:`strawberryfields.fock`
     device of the `PennyLane-SF <https://github.com/XanaduAI/pennylane-sf>`_ plugin.
  
  Args:
      theta_1 (tensor_like): shape :math:`(L, K)` tensor of transmittivity angles for first interferometer
      phi_1 (tensor_like): shape :math:`(L, K)` tensor of phase angles for first interferometer
      varphi_1 (tensor_like): shape :math:`(L, M)` tensor of rotation angles to apply after first interferometer
      r (tensor_like): shape :math:`(L, M)` tensor of squeezing amounts for :class:`~pennylane.ops.Squeezing` operations
      phi_r (tensor_like): shape :math:`(L, M)` tensor of squeezing angles for :class:`~pennylane.ops.Squeezing` operations
      theta_2 (tensor_like): shape :math:`(L, K)` tensor of transmittivity angles for second interferometer
      phi_2 (tensor_like): shape :math:`(L, K)` tensor of phase angles for second interferometer
      varphi_2 (tensor_like): shape :math:`(L, M)` tensor of rotation angles to apply after second interferometer
      a (tensor_like): shape :math:`(L, M)` tensor of displacement magnitudes for :class:`~pennylane.ops.Displacement` operations
      phi_a (tensor_like): shape :math:`(L, M)` tensor of displacement angles for :class:`~pennylane.ops.Displacement` operations
      k (tensor_like): shape :math:`(L, M)` tensor of kerr parameters for :class:`~pennylane.ops.Kerr` operations
      wires (Iterable): wires that the template acts on
  
  .. details::
      :title: Usage Details
  
      **Parameter shapes**
  
      A list of shapes for the 11 input parameter tensors can be computed by the static method
      :meth:`~.CVNeuralNetLayers.shape` and used when creating randomly
      initialised weights:
  
      .. code-block:: python
  
          shapes = CVNeuralNetLayers.shape(n_layers=2, n_wires=2)
          weights = [np.random.random(shape) for shape in shapes]
  
          def circuit():
            CVNeuralNetLayers(*weights, wires=[0, 1])
            return qml.expval(qml.QuadX(0))
code: def num_params(self):
      return 11
  
imports: import pennylane
  from pennylane.operation import Operation, AnyWires
label_desc: Use image node_id 2 for calling the CVNeuralNetLayers obj's underlying member method code with example usage: obj.num_params() and returns: int