작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
346
0
안녕하세요. 강사님. 제가 이번 실습을 기반으로 병해충 진단 모델을 구축중입니다. 이에 대해 질문사항이 있어 질문드립니다.
efficientNet모델로 딥러닝 모델을 만들고 있습니다. 총 16개의 병해충에 걸린 식물을 구분하는 모델입니다. output layer에서 최종적으로 예측하고 나온 16개의 확률값중에 가장 큰 확률값의 index가 4라고 할때 이게 어떤 식물인지 어떻게 아는건가요?..
답변 1
0
안녕하십니까,
label encoding 값을 label값으로 역변환을 해주시면 됩니다.
최초에 병해충 타겟값이 label로 해충A, 해충B, 해충C로 되어 있어서 이걸 사이킷런의 LabelEncoder로 변환한 후에 to_categorical()로 one-hot encoding 하셨다면 해당 LabelEncoder객체로 다시 역변환해주면 됩니다.
예를 들어
le = LabelEncoder()
label_encoded = le.fit_transform(병해충 타겟값 label 집합)
one_encoded = to_categorical(label_encoded)
해서 예측 결과가 index값 4가 나왔다면
le.inverse_transform([4]) 를 입력하시면 병해충 label값이 다시 도출 됩니다.
감사합니다.
아 감사합니다!! 해결했습니다.
죄송한데.. 질문 두 개만 더 하겠습니다.
1)제가 처음에 one-hot-encoding을 진행할 때 말씀해주신 LabelEncoder() 말고 pd.get_dummies를 사용해서 원-핫 인코딩을 진행했었습니다. 이런 방식으로는 제가 질문한 사항에 대해 해결할 수 없을까요?
2)강사님 코드기반으로 아까 언급한 class 갯수가 16개인 efficientNetB5 모델을 구축했습니다. 하지만, 무슨 이유인지 model.evaluate로 평가한 결과 정확도가 50%밖에 되지 않았습니다. 대부분 이런 경우 정확도를 높일려면 어떻게 해야될까요? 각 클래스별 이미지 갯수는 약 1천건으로 맞춰주었습니다. 혹시 몰라 아래에 코드를 첨부하겠습니다.