{
  "id": 578353,
  "title": "Ensemble with only one mel_spec per test file",
  "url": "/competitions/birdclef-2025/discussion/578353",
  "author_name": "thomas kern",
  "post_date": "2025-05-10T08:49:43.194000",
  "votes": 0,
  "comment_count": 0,
  "views": 0,
  "content": "<p>Add cfg for each model with only model_path and model_name different.</p>\n<p>Load models before run:</p>\n<p>cfg = CFG()<br>\npipeline = BirdCLEF2025Pipeline(cfg)<br>\nmodels1=pipeline.load_models()</p>\n<p>cfg = CFG1()<br>\npipeline = BirdCLEF2025Pipeline(cfg)<br>\nmodels2=pipeline.load_models()</p>\n<p>cfg = CFG()<br>\nprint(f\"Using device: {cfg.device}\")<br>\npipeline = BirdCLEF2025Pipeline(cfg)<br>\npipeline.run()</p>\n<p>Comment out self.load_models() in def run</p>\n<p>Change in def predict_on_spectrogram:</p>\n<p>`segment_preds1 = []<br>\nfor model in models1:<br>\n        with torch.no_grad():<br>\n            outputs = model(mel_spec_tensor)<br>\n            probs = torch.sigmoid(outputs).cpu().numpy().squeeze()<br>\n            segment_preds1.append(probs)</p>\n<p>segment_preds2 = []<br>\nfor model in models2:<br>\n     with torch.no_grad():<br>\n        outputs = model(mel_spec_tensor)<br>\n        probs = torch.sigmoid(outputs).cpu().numpy().squeeze()<br>\n        segment_preds2.append(probs)<br>\nfinal_preds = np.mean(segment_preds1, axis=0) * 0.60 + np.mean(segment_preds2, axis=0) * 0.40`</p>\n<p>How to keep indent?</p>",
  "messages": [
    {
      "id": 3198950,
      "postDate": "2025-05-10T08:49:43.193Z",
      "content": "<p>Add cfg for each model with only model_path and model_name different.</p>\n<p>Load models before run:</p>\n<p>cfg = CFG()<br>\npipeline = BirdCLEF2025Pipeline(cfg)<br>\nmodels1=pipeline.load_models()</p>\n<p>cfg = CFG1()<br>\npipeline = BirdCLEF2025Pipeline(cfg)<br>\nmodels2=pipeline.load_models()</p>\n<p>cfg = CFG()<br>\nprint(f\"Using device: {cfg.device}\")<br>\npipeline = BirdCLEF2025Pipeline(cfg)<br>\npipeline.run()</p>\n<p>Comment out self.load_models() in def run</p>\n<p>Change in def predict_on_spectrogram:</p>\n<p>`segment_preds1 = []<br>\nfor model in models1:<br>\n        with torch.no_grad():<br>\n            outputs = model(mel_spec_tensor)<br>\n            probs = torch.sigmoid(outputs).cpu().numpy().squeeze()<br>\n            segment_preds1.append(probs)</p>\n<p>segment_preds2 = []<br>\nfor model in models2:<br>\n     with torch.no_grad():<br>\n        outputs = model(mel_spec_tensor)<br>\n        probs = torch.sigmoid(outputs).cpu().numpy().squeeze()<br>\n        segment_preds2.append(probs)<br>\nfinal_preds = np.mean(segment_preds1, axis=0) * 0.60 + np.mean(segment_preds2, axis=0) * 0.40`</p>\n<p>How to keep indent?</p>",
      "rawMarkdown": "Add cfg for each model with only model_path and model_name different.\n\nLoad models before run:\n\ncfg = CFG()\npipeline = BirdCLEF2025Pipeline(cfg)\nmodels1=pipeline.load_models()\n\ncfg = CFG1()\npipeline = BirdCLEF2025Pipeline(cfg)\nmodels2=pipeline.load_models()\n\ncfg = CFG()\nprint(f\"Using device: {cfg.device}\")\npipeline = BirdCLEF2025Pipeline(cfg)\npipeline.run()\n\nComment out self.load_models() in def run\n\nChange in def predict_on_spectrogram:\n\n`segment_preds1 = []\nfor model in models1:\n        with torch.no_grad():\n            outputs = model(mel_spec_tensor)\n            probs = torch.sigmoid(outputs).cpu().numpy().squeeze()\n            segment_preds1.append(probs)\n\nsegment_preds2 = []\nfor model in models2:\n     with torch.no_grad():\n        outputs = model(mel_spec_tensor)\n        probs = torch.sigmoid(outputs).cpu().numpy().squeeze()\n        segment_preds2.append(probs)\nfinal_preds = np.mean(segment_preds1, axis=0) * 0.60 + np.mean(segment_preds2, axis=0) * 0.40`\n\nHow to keep indent?\n\n\n"
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "3198950": "Add cfg for each model with only model_path and model_name different.\n\nLoad models before run:\n\ncfg = CFG()\npipeline = BirdCLEF2025Pipeline(cfg)\nmodels1=pipeline.load_models()\n\ncfg = CFG1()\npipeline = BirdCLEF2025Pipeline(cfg)\nmodels2=pipeline.load_models()\n\ncfg = CFG()\nprint(f\"Using device: {cfg.device}\")\npipeline = BirdCLEF2025Pipeline(cfg)\npipeline.run()\n\nComment out self.load_models() in def run\n\nChange in def predict_on_spectrogram:\n\n`segment_preds1 = []\nfor model in models1:\n        with torch.no_grad():\n            outputs = model(mel_spec_tensor)\n            probs = torch.sigmoid(outputs).cpu().numpy().squeeze()\n            segment_preds1.append(probs)\n\nsegment_preds2 = []\nfor model in models2:\n     with torch.no_grad():\n        outputs = model(mel_spec_tensor)\n        probs = torch.sigmoid(outputs).cpu().numpy().squeeze()\n        segment_preds2.append(probs)\nfinal_preds = np.mean(segment_preds1, axis=0) * 0.60 + np.mean(segment_preds2, axis=0) * 0.40`\n\nHow to keep indent?\n\n\n"
  }
}