불균형이 심한 데이터에 분류 문제가 있습니다. 오버 샘플링과 언더 샘플링은 물론 불충분 한 범주 형 출력에 대한 비용을 변경하면 더 적합한 결과를 얻을 수 있습니다. 이 작업을 수행하기 전에 tensorflow는 각 입력을 다수 그룹으로 분류합니다 (그리고 의미가없는 것처럼 90 % 이상의 정확도를 얻습니다).
각 그룹의 역률 로그가 내가 시도한 최고의 승수를 만들었 음을 알았습니다. 비용 함수에 대한 표준 조작이 더 있습니까? 이것이 올바르게 구현 되었습니까?
from collections import Counter
counts = Counter(category_train)
weightsArray =[]
for i in range(n_classes):
weightsArray.append(math.log(category_train.shape[0]/max(counts[i],1))+1)
class_weight = tf.constant(weightsArray)
weighted_logits = tf.mul(pred, class_weight)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(weighted_logits, y))
optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost)