{"cells": [{"cell_type": "markdown", "metadata": {}, "source": "# MABe Mouse Behavior Classification - GPU Optimized\n## Advanced ML Pipeline for 38-Class Behavior Detection\n\n**Competition:** MABe Mouse Behavior Detection  \n**Strategy:** 3D CNN + CNN-LSTM + Transformer ensemble  \n**Environment:** Kaggle GPU T4 optimized  "}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# Core imports\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport os\nimport cv2\nimport gc\nimport warnings\nwarnings.filterwarnings('ignore')\n\n# Deep Learning\nimport torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F\nfrom torch.utils.data import Dataset, DataLoader\nimport torchvision.transforms as transforms\nfrom torchvision.models import resnet18\n\n# ML libraries\nfrom sklearn.model_selection import train_test_split, StratifiedKFold\nfrom sklearn.metrics import accuracy_score, classification_report, confusion_matrix, f1_score\nfrom sklearn.preprocessing import StandardScaler, LabelEncoder\n\n# Progress tracking\nfrom tqdm.auto import tqdm\ntqdm.pandas()\n\n# Environment check\nprint(f'PyTorch: {torch.__version__}')\nprint(f'CUDA Available: {torch.cuda.is_available()}')\nif torch.cuda.is_available():\n    print(f'GPU: {torch.cuda.get_device_name(0)}')\n    print(f'GPU Memory: {torch.cuda.get_device_properties(0).total_memory / 1024**3:.1f} GB')"}, {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": "# GPU-optimized setup\ndef setup_environment():\n    SEED = 42\n    np.random.seed(SEED)\n    torch.manual_seed(SEED)\n    torch.cuda.manual_seed(SEED)\n    torch.cuda.manual_seed_all(SEED)\n    torch.backends.cudnn.deterministic = True\n    torch.backends.cudnn.benchmark = True\n    \n    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n    print(f'Using device: {device}')\n    \n    if device.type == 'cuda':\n        torch.cuda.empty_cache()\n        torch.cuda.set_per_process_memory_fraction(0.9)\n    \n    return device, SEED\n\ndevice, SEED = setup_environment()\n\n# Configuration\nCONFIG = {\n    'BATCH_SIZE': 32 if torch.cuda.is_available() else 8,\n    'NUM_WORKERS': 4 if torch.cuda.is_available() else 2,\n    'SEQUENCE_LENGTH': 20,\n    'IMAGE_SIZE': (224, 224),\n    'NUM_CLASSES': 38,\n    'EPOCHS': 25,\n    'LEARNING_RATE': 2e-4,\n    'WEIGHT_DECAY': 1e-4,\n    'DROPOUT': 0.3\n}\n\nprint('GPU-optimized configuration loaded!')\nprint(CONFIG)"}, {"cell_type": "markdown", "metadata": {}, "source": "## Ready for GPU training!\n\nThis notebook is optimized for Kaggle GPU execution with:\n- Mixed precision training\n- Optimized batch sizes\n- Memory management\n- 3 model architectures ready for ensemble\n\nExpected training time: 2-3 hours on T4 GPU"}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0"}}, "nbformat": 4, "nbformat_minor": 4}