37 lines
1.3 KiB
Bash
Executable File
37 lines
1.3 KiB
Bash
Executable File
#!/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
|