code: def test_fprop(self):
      conv_layer = layers.Conv2D(
          kernel=self.conv_W,
          bias=self.conv_b,
          strides=(1, 1),
          padding=PaddingMode.valid,
          data_format="channels_last",
          conv_mxts_mode="Linear",
      )
      self.create_small_net_with_conv_layer(
          conv_layer, outputs_per_channel=9
      )
  
      func = compile_func(
          [self.input_layer.get_activation_vars()],
          self.conv_layer.get_activation_vars(),
      )
      np.testing.assert_almost_equal(
          func(self.inp),
          np.array(
              [
                  [
                      [
                          [439, 467, 495],
                          [551, 579, 607],
                          [663, 691, 719],
                      ],
                      [
                          [-439, -467, -495],
                          [-551, -579, -607],
                          [-663, -691, -719],
                      ],
                  ],
                  [
                      [
                          [1335, 1363, 1391],
                          [1447, 1475, 1503],
                          [1559, 1587, 1615],
                      ],
                      [
                          [-1335, -1363, -1391],
                          [-1447, -1475, -1503],
                          [-1559, -1587, -1615],
                      ],
                  ],
              ]
          ).transpose(0, 2, 3, 1),
      )
  
imports: from __future__ import division
  from __future__ import print_function
  from __future__ import absolute_import
  import unittest
  from unittest import skip
  import sys
  import os
  import numpy
  import deeplift.layers
  from deeplift.layers import DenseMxtsMode
  from deeplift.layers.convolutional import PoolMode, PaddingMode
  from deeplift.util import compile_func
  import itertools
label_desc: Use image node_id 3 for calling the TestConv obj's underlying member method code with example usage: obj.test_fprop() without return types