I am working on a project for GNN_based decoder. A project to improve code using Nvidia's Sienna library. I want to measure FLOPs, but it's all custom models, so I don't know how to start. I want to measure the amount of computation of the call function set to @tf.funcion, what should I do
@tf.function(jit_compile=True) def call(self, batch_size, ebno_db):
    # no rate-adjustment for uncoded transmission or es_no scenario
    if self._decoder is not None and self._es_no==False:
        no = ebnodb2no(ebno_db, self._num_bits_per_symbol, self._k/self._n)
    else: #for uncoded transmissions the rate is 1
        no = ebnodb2no(ebno_db, self._num_bits_per_symbol, 1)
    b = self._binary_source([batch_size, self._k])
    if self._encoder is not None:
        c = self._encoder(b)
    else:
        c = b
    # check that rate calculations are correct
    assert self._n==c.shape[-1], "Invalid value of n."
    # zero padding to support odd codeword lengths
    if self._n%2==1:
        c_pad = tf.concat([c, tf.zeros([batch_size, 1])], axis=1)
    else: # no padding
        c_pad = c
    x = self._mapper(c_pad)
    y = self._channel([x, no])
    llr = self._demapper([y, no])
    # remove zero padded bit at the end
    if self._n%2==1:
        llr = llr[:,:-1]
    
    # and run the decoder
    if self._decoder is not None:
        llr = self._decoder(llr)
        
    if self._return_infobits:
        return b, llr
    else:
        return c, llr
How much calculation will it take to perform the decoding process? Below is the link to the github of that code.
https://github.com/NVlabs/gnn-decoder/blob/master/GNN_decoder_BCH.ipynb
I'm curious about how to measure FLOPs even if it's not deep learning as above.