모델 및 OUT 파일을 생성하려면 svm-light를 실행하고 다양한 매개변수를 테스트해야 합니다.
내 명령줄 예(-t, -g, -j 및 -c는 내 매개 변수입니다. t는 항상 2입니다. g/j/c는 다른 값으로 테스트되었습니다.):
svm_learn -t 2 -g ? -j ? -c ? inputfile1 model1 > OUT1
매개변수 g/j/c(가능한 모든 조합)를 테스트하고 싶습니다.
g=(0.1, 0.01, 0.001, 0.0001, 0.00001, 1, 10)
c=(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 25, 50, 100)
j=(1, 2, 3)
이러한 다양한 매개변수/조합을 모두 테스트하기 위해 루프를 어떻게 만들 수 있습니까?
이것을 시도했지만 6개의 조합만 얻었습니다(0.0001-4/0.001-3/0.01-2/0.1-1/10-6/1-5).
#!/bin/sh
var1="0.1 0.01 0.001 0.0001 1 10"
var2="1 2 3 4 5 6 7 8 9 10 15 25 50 100"
set -- $var2
for i in $var1
do
svm_learn -t 2 -g $i -c $1 trainingset1 model1-${i}-${1} > OUT1-${i}-${1}
shift
done
답변1
중첩 루프를 사용하십시오.
gs=(0.1 0.01 0.001 0.0001 0.00001 1 10)
cs=(1 2 3 4 5 6 7 8 9 10 15 25 50 100)
js=(1 2 3)
for g in "${gs[@]}"
do
for c in "${cs[@]}"
do
for j in "${js[@]}"
do
svm_learn -t 2 -g "$g" -j "$j" -c "$c" ...
done
done
done
아니면 그냥:
for g in 0.1 0.01 0.001 0.0001 0.00001 1 10
do
for c in 1 2 3 4 5 6 7 8 9 10 15 25 50 100
do
for j in 1 2 3
do
svm_learn -t 2 -g "$g" -j "$j" -c "$c" ...
done
done
done