簡體   English   中英

有沒有其他方法可以將 class 權重應用於 tensorflow neural.networks?

[英]Are there any alternate ways to apply class weights to tensorflow neural networks?

我目前正在嘗試創建一個帶有多標簽目標變量的 Tensorflow DNN model,雖然我的代碼到目前為止沒有任何問題,但我正在使用的數據集的不平衡性質導致了一些問題。

根據 Keras 文檔中的建議,我對 model 應用了初始偏差。我還嘗試在 model 編譯 function 中啟用 class 權重參數,這就是我卡住的地方

https://github.com/tensorflow/tensorflow/issues/41448

如 GitHub 鏈接所示,此方法似乎存在一個已知錯誤,而我嘗試創建解決方法的嘗試根本沒有成功。 對於創建解決方法的任何建議,我將不勝感激,因為老實說,我自己也不知所措。 當前正在運行 Tensorflow 2.4

您使用的是 TensorFlow 的稍舊版本。這在使用 TensorFlow 2.7 和 Keras 2.7 的多類數據集中對我有用:

from sklearn.utils.class_weight import compute_class_weight


class_weights = compute_class_weight(class_weight="balanced", classes=np.unique(y_train),
                                     y=y_train)

model.fit(
    ...
    class_weight=dict(enumerate(class_weights))
)

y_train的值必須是[0, NUMBER_CLASSES - 1]范圍內的整數,此代碼才能正常工作。 您可以使用LabelEncoder完成此操作。

或者,您可以使用sample_weight而不是class_weight來完成同樣的事情(事實上, Keras 在內部將class_weight轉換為sample_weight )。 在這里您可以找到有關這些參數的文檔。

其他易於實施且有效的解決數據不平衡的方法是過采樣欠采樣,它們與使用class_weight具有類似的效果。 如果您在使用class_weightsample_weight時遇到問題,您可以使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM