(wn, s_wv)
return pr_wvi
s_wv: [B, 4, mL, 2]
    - predict best st-idx & ed-idx
s_wv: [B, 4, mL, 2]
    - predict best st-idx & ed-idx
s_wv : [ B 4 mL 2 ] - predict best st - idx & ed - idx
def pred_wvi_se(wn, s_wv):
    """
    s_wv: [B, 4, mL, 2]
    - predict best st-idx & ed-idx
    """

    s_wv_st, s_wv_ed = s_wv.split(1, dim=3)  # [B, 4, mL, 2] -> [B, 4, mL, 1], [B, 4, mL, 1]

    s_wv_st = s_wv_st.squeeze(3) # [B, 4, mL, 1] -> [B, 4, mL]
    s_wv_ed = s_wv_ed.squeeze(3)

    pr_wvi_st_idx = s_wv_st.argmax(dim=2) # [B, 4, mL] -> [B, 4, 1]
    pr_wvi_ed_idx = s_wv_ed.argmax(dim=2)

    pr_wvi = []
    for b, wn1 in enumerate(wn):
        pr_wvi1 = []
        for i_wn in range(wn1):
            pr_wvi_st_idx11 = pr_wvi_st_idx[b][i_wn]
            pr_wvi_ed_idx11 = pr_wvi_ed_idx[b][i_wn]
            pr_wvi1.append([pr_wvi_st_idx11.item(), pr_wvi_ed_idx11.item()])
        pr_wvi.append(pr_wvi1)

    return pr_wvi
def pred_wvi_se ( wn , s_wv ) : s_wv_st , s_wv_ed = s_wv . split ( 1 , dim = 3 ) # [B, 4, mL, 2] -> [B, 4, mL, 1], [B, 4, mL, 1] s_wv_st = s_wv_st . squeeze ( 3 ) # [B, 4, mL, 1] -> [B, 4, mL] s_wv_ed = s_wv_ed . squeeze ( 3 ) pr_wvi_st_idx = s_wv_st . argmax ( dim = 2 ) # [B, 4, mL] -> [B, 4, 1] pr_wvi_ed_idx = s_wv_ed . argmax ( dim = 2 ) pr_wvi = [ ] for b , wn1 in enumerate ( wn ) : pr_wvi1 = [ ] for i_wn in range ( wn1 ) : pr_wvi_st_idx11 = pr_wvi_st_idx [ b ] [ i_wn ] pr_wvi_ed_idx11 = pr_wvi_ed_idx [ b ] [ i_wn ] pr_wvi1 . append ( [ pr_wvi_st_idx11 . item ( ) , pr_wvi_ed_idx11 . item ( ) ] ) pr_wvi . append ( pr_wvi1 ) return pr_wvi