def decoder_fp_flops(seq_len, vocab_size, embed_dim, latent_dim, hidden_dim):
    """Estimate FLOPs/sample in ATOM VAE decoder forward prop"""
    flops = 0

    # FC (init hidden)
    flops += 2 * (hidden_dim*latent_dim) + hidden_dim

    # RNN 1
    flops += 2 * (3*hidden_dim*(embed_dim+latent_dim) + 3*hidden_dim**2) * seq_len
    flops += 2 * (3*hidden_dim) * seq_len

    # RNN 2
    flops += 2 * (3*hidden_dim**2 + 3*hidden_dim**2) * seq_len
    flops += 2 * (3*hidden_dim) * seq_len

    # RNN 3
    flops += 2 * (3*hidden_dim**2 + 3*hidden_dim**2) * seq_len
    flops += 2 * (3*hidden_dim) * seq_len

    # FC (preds)
    flops += 2 * (vocab_size*hidden_dim) * seq_len
    flops += vocab_size * seq_len

    return flops