你下載的所有檔案目前都在同一個資料夾。請依下圖建立兩個子資料夾 backend 和 frontend/src/components,把對應檔案搬進去。
ecg-cnn-analyzer,選 Public,不要勾 README(我們自己有)。
cd 你的路徑/ecg-cnn-analyzer git init git add . git commit -m "first commit" git branch -M main git remote add origin https://github.com/你的帳號/ecg-cnn-analyzer.git git push -u origin main
Render 免費方案可跑 FastAPI,冷啟動約 30 秒。請依以下步驟操作:
ecg-cnn-analyzer repo。
| Name | ecg-cnn-backend |
| Root Directory | backend |
| Runtime | Python 3 |
| Build Command | pip install -r requirements.txt |
| Start Command | uvicorn main:app --host 0.0.0.0 --port $PORT |
| Instance Type | Free |
https://ecg-cnn-backend.onrender.comhttps://你的網址/health,應該看到:
{"status": "ok", "jobs_active": 0}
前端部署到 Netlify,並設定環境變數指向剛才的 Render 後端網址。
ecg-cnn-analyzer repo,填寫建置設定:
| Base directory | frontend |
| Build command | npm run build |
| Publish directory | frontend/dist |
| VITE_API_URL | https://ecg-cnn-backend.onrender.com |
| VITE_WS_URL | wss://ecg-cnn-backend.onrender.com |
wss://(加 s),不是 ws://,因為 Render 是 HTTPS。https://ecg-analyzer-xxx.netlify.app
| # | 功能區 | 操作說明 |
|---|---|---|
| 1 | 左側設定面板 |
調整卷積層數(1-4)、核大小、學習率、Epochs 等超參數。 董事報告建議起始設定:layers=2, kernel=5, lr=1e-3, epochs=20, data=mitbih。 |
| 2 | 開始訓練 |
點「開始訓練」後,左上角出現綠色「訓練中」標籤。POST /train 送出設定 → 收到 job_id → WebSocket 自動連接。
|
| 3 | 訓練監控分頁 |
即時顯示每個 epoch 的 Train Loss / Val Loss / Accuracy 曲線。 底部日誌欄顯示每 5 epochs 的詳細數字。觀察重點:若 val_loss 持續高於 train_loss,代表過擬合,需提高 Dropout 或減少層數。 |
| 4 | 模型指標分頁 |
訓練完成後自動跳轉。顯示: • 混淆矩陣:對角線越亮綠 = 分類越準 • F1 分數柱狀圖:紅色代表 F1 < 0.85,該類別需要加強 • Macro Avg:向董事報告的核心數字 |
| 5 | 預測分析分頁 |
上傳真實 ECG CSV(每行 187 個數值)→ 顯示每筆的分類結果與信心度。 點「分析」按鈕觸發 Grad-CAM:黃色填充區域就是模型判斷異常的關鍵波段,可直接截圖放入董事報告。 |
| 6 | 下載報告 |
右上角「下載 .md 報告」→ 取得包含混淆矩陣、F1 表格、損失摘要的完整 Markdown 報告。 可直接貼入 Notion / Confluence,或轉為 PDF 交給董事會。 |
| V 類召回率低 | 改用 FocalLoss,或增加卷積層數至 3 |
| 收斂太慢 | 學習率從 1e-3 改 1e-2,或換用 AdamW |
| 過擬合(val > train) | 提高 Dropout 至 0.4,或減少 Epochs |
| 正式報告前 | 將 data_source 改為 mitbih,使用真實心律資料驗證 |