What is the purpose of
         self.data = np.load(path).astype('float32')
         self.data = self.data.astype(np.int_)

in the Dataset?
Can you try removing the second line?
You should also change the model invocation back to output = model(features).
The error message is confusing because the operator expected weights to be Long for Long input. To fix this you want to change your input to Float and match the weights which are already Float by default.