code: def build_pnet(self, input_shape=None):
      if input_shape is None:
          input_shape = (None, None, 3)
  
      p_inp = Input(input_shape)
  
      p_layer = Conv2D(
          10, kernel_size=(3, 3), strides=(1, 1), padding="valid"
      )(p_inp)
      p_layer = PReLU(shared_axes=[1, 2])(p_layer)
      p_layer = MaxPooling2D(
          pool_size=(2, 2), strides=(2, 2), padding="same"
      )(p_layer)
  
      p_layer = Conv2D(
          16, kernel_size=(3, 3), strides=(1, 1), padding="valid"
      )(p_layer)
      p_layer = PReLU(shared_axes=[1, 2])(p_layer)
  
      p_layer = Conv2D(
          32, kernel_size=(3, 3), strides=(1, 1), padding="valid"
      )(p_layer)
      p_layer = PReLU(shared_axes=[1, 2])(p_layer)
  
      p_layer_out1 = Conv2D(2, kernel_size=(1, 1), strides=(1, 1))(
          p_layer
      )
      p_layer_out1 = Softmax(axis=3)(p_layer_out1)
  
      p_layer_out2 = Conv2D(4, kernel_size=(1, 1), strides=(1, 1))(
          p_layer
      )
  
      p_net = Model(p_inp, [p_layer_out2, p_layer_out1])
  
      return p_net
  
imports: from tensorflow.keras.layers import Input, Dense, Conv2D, MaxPooling2D, PReLU, Flatten, Softmax
  from tensorflow.keras.models import Model
  import numpy
label_desc: Use image node_id 1 for calling the NetworkFactory obj's underlying member method code with example usage: obj.build_pnet(input_shape) and returns: p_net