TypeError: forward() takes 1 positional argument but 2 were given while inferencing of PyTorch model
My mode likes the following:
    class RankingModel(nn.Module):
        def __init__(self, conf: Dict[Text, Any], **kwargs: Any):
            super(RankingModel, self).__init__()
            self.conf = deepcopy(conf)
            ......

    def forward(self, **_features):   # the model input is a torch.utils.data.Dataset()
        ### model body part.
        return prob

Then I train my model using:
trainer = Trainer(
                model=model,
                args=training_args,
                train_dataset=training_dataset,
                eval_dataset=valid_dataset,
                compute_metrics=compute_metrics_for_binary_classification,
                callbacks=[callback],
          )

trainer.train()

Then I predict the result with the model.
test_predict = model(x_test)

I get the error:
TypeError                                 Traceback (most recent call last)
Input In [18], in &lt;cell line: 9&gt;()
     17 x_test.from_dict(feature_test)
     18 x_test.set_format(tensor_type=&quot;torch&quot;)
---&gt; 20 test_predict = model(x_test) # trainer.predict(x_test).predictions
     21 if np.argmax(test_predict) &lt; 5:
     22     recall_counter = recall_counter + 1

File ~/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py:1051, in Module._call_impl(self, *input, **kwargs)
   1047 # If we don't have any hooks, we want to skip the rest of the logic in
   1048 # this function, and just call forward.
   1049 if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks
   1050         or _global_forward_hooks or _global_forward_pre_hooks):
-&gt; 1051     return forward_call(*input, **kwargs)
   1052 # Do not call functions when jit is used
   1053 full_backward_hooks, non_full_backward_hooks = [], []

TypeError: forward() takes 1 positional argument but 2 were given

But all is OK if I predict the result through:
test_predict = trainer.predict(x_test).predictions

Why may I not use model(x_test) to get inference result? Could you please give me any suggestions? Thanks.

Your forward expect argument with key like forward(data=myarray) because you used double asterix when defining it and didn't give positional argument.
either use def forward(self, input, **kwargs)which  would read the first argument of the call and then use other argument as kwargs
or call it with:
model(keyword=x_test) and then in your foward function you can access it with _features['keyword']
