>

얼굴이 두 개인 얼굴 인식 프로젝트를 진행하고 있습니다.

1. personA
    image1.jpg
    image2.jpg

2. personB
    image1.jpg
    image2.jpg

위와 같은 데이터 세트의 얼굴 임베딩에서 모델을 훈련하려고합니다.

params = {"C": [0.001, 0.01, 0.1, 1.0, 10.0, 100.0, 1000.0], "gamma": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]}
model = GridSearchCV(SVC(kernel="rbf", gamma="auto", probability=True), params, cv=3, n_jobs=-1)
model.fit(data["embeddings"], labels)

길이 data["embeddings"]labels 이다 4 . data["embeddings'] personA, personB의 얼굴 임베딩의 ndarray를 포함합니다

data['embeddings'] = [
                         [0.02331057, -0.01995077, ..], 
                         [-0.00034041,  0.02753334, ..], 
                         [0.02454563, -0.03797123, ...], 
                         [0.10561685, -0.08444008, ...]
                     ]
labels = [0 0 1 1]

하지만 나는 아래 오류가 발생합니다. model.fit(data["embeddings"], labels) :

ValueError: n_splits=3 cannot be greater than the number of members in each class.

이 오류를 이해할 수 없습니다. 누구 든지이 문제를 설명하고 어떻게 해결할 수 있습니까?

  • 답변 # 1

    자세히 읽으면 오류 메시지가 명확하고 자체 설명 가능합니다. 각 클래스에 대해 총 2 개의 샘플 만 있으므로 3 배의 교차 검증을 할 수 없습니다. 이것은 필요합니다최소한각 수업마다 3 개의 샘플이 제공됩니다.

    나는 그것이 작동해야한다고 생각한다. cv=2 오류가 발생하지 않지만 전체 접근 방식 (예 : 4 개의 샘플 만있는 데이터 세트)은 매우 의심 스럽습니다.

  • 답변 # 2

    교차 검증 분할 (cv)을 3으로 설정하고 있습니다. 두 개의 입력 데이터 만 있기 때문에 3 개의 분할로 나눌 수 없습니다. 세 번째 교육 예제 (3 인칭)를 추가하거나 분할을 cv = 2 또는 cv = None으로 변경할 수 있습니다.

관련 자료

  • 이전 c# - WPF에서 CheckBox의 현재 값 가져 오기
  • 다음 html을 변경하지 않고 CSS 그리드의 1 개 항목을 100 % 확장하십시오