def eval(self, row: Row):
     row_dict = row.as_dict()
     feed_dict = {}
     for feed_tensor_key in self._predictor.feed_tensors.keys():
         if feed_tensor_key not in row_dict:
             raise RuntimeError(
                 "input tensor with key {} is not in the row {}".format(
                     feed_tensor_key, row))
         feed_dict[feed_tensor_key] = row_dict[feed_tensor_key]
     predict_dict = self._predictor(feed_dict)
     output_list = []
     for predict_col_name in self._predict_col_names:
         if predict_col_name not in predict_dict:
             raise RuntimeError(
                 "predict column name {} is not in the prediction dict {}".
                 format(predict_col_name, predict_dict))
         output_list.append(predict_dict[predict_col_name])
     return Row(*row, *output_list)