Hi all,
I am using integrated gradient (IG) package from Captum package, which I apply one LSTM on varying length sequences and then I try to get IG from the trained model using the following line of code:
attr, delta = ig.attribute((data, seq_lengths), target=1, return_convergence_delta=True)
but I am getting the following error:
RuntimeError:
lengths
array must be sorted in decreasing order whenenforce_sorted
is True. You can passenforce_sorted=False
to pack_padded_sequence and/or pack_sequence to sidestep this requirement if you do not need ONNX exportability.
however, I have sorted the lengths of the array in each batch in decreasing order.
please note that If I use this IG without using pack_padded_sequence it works perfectly.
regarding the previous error, I set enforce_sorted=False in pack_padded_sequence but I am getting another error:
RuntimeError: Length of all samples has to be greater than 0, but found an element in ‘lengths’ that is <= 0
Here is the length of all the samples which none of them are less than zero:
tensor([23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 21, 21, 21, 20,
14, 10])
any help would be much appreciated.