[英]Kernel dies when I apply a class weights on a CNN with Tensorflow for Imbalanced Data
[英]Class weights on imbalanced CNN
我正在嘗試對屬於 4 個類別的一組 X 射線圖像實施簡單的 CNN 分類。 數據集如下所示:
img A B C D
1 [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ... 0 0 0 1
2 [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ... 0 0 0 1
3 [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ... 0 0 1 0
4 [[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], ... 0 0 0 1
A-80 B-300 C-70 D-150
我如何繼續在這些設置中應用類權重?
類權重是一個字典,用於補償數據集中的不平衡。 例如,如果你有一個包含 1000 張狗圖像和 100 張貓圖像的數據集,你的分類器就會偏向於狗類。 如果它每次都預測狗,那么它在 90% 的時間里都是正確的。 為了補償不平衡,class_weights 字典使您可以在計算損失時對貓的樣本進行加權,其權重是狗的 10 倍。 一種方法是使用 sklearn 中的 class_weight 方法,如下所示
from sklearn.utils import class_weight
import numpy as np
class_weights = class_weight.compute_class_weight(
'balanced',
np.unique(train_generator.classes),
train_generator.classes)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.