#!/bin/bash SAMPLE_DIR=${1:-"sample"} TRAIN_DIR="$SAMPLE_DIR/training" VAL_DIR="$SAMPLE_DIR/validation" MODEL_DIR="$SAMPLE_DIR/model" DATA_DIR="$SAMPLE_DIR/dataset" EPOCHS=50 while true; do echo "--- [준비] 폴더 초기화 ---" rm -rf "$TRAIN_DIR" "$VAL_DIR" "$DATA_DIR" "sample/output/factorize" mkdir -p "$TRAIN_DIR" "$VAL_DIR" "$MODEL_DIR" "$DATA_DIR" "sample/output/factorize" "sample/output" echo "--- [채보 선별] ---" find tja -name "*.tja" | sort -R > file_list.txt head -n 200 file_list.txt | xargs -I {} cp {} "$TRAIN_DIR/" tail -n 50 file_list.txt | xargs -I {} cp {} "$VAL_DIR/" echo "--- [학습 진행] Epoch: $EPOCHS ---" ./scripts/run_train.sh "$TRAIN_DIR" "$MODEL_DIR" "$DATA_DIR" "$EPOCHS" echo "--- [검증 및 상수 추론] ---" bun run scripts/predict_batch.ts "$MODEL_DIR" "$SAMPLE_DIR" bun run scripts/compare_results.ts "$SAMPLE_DIR" # 오차 검사 high_error=$(jq 'map(select(.diff != null and (.diff | tonumber | fabs > 0.1))) | length' "$SAMPLE_DIR/comparison.json") if [ "$high_error" -eq 0 ]; then echo "목표 달성: 모든 예측 오차가 0.1 이내입니다." break else echo "오차 발생: $high_error 건이 0.1 초과. 학습 강도(Epoch)를 2배로 늘려 재학습합니다." EPOCHS=$((EPOCHS * 2)) fi done