【问题标题】:Kernel died when I add parameter class_weight to a CNN当我将参数 class_weight 添加到 CNN 时,内核死亡
【发布时间】:2021-06-19 01:36:30
【问题描述】:

基本上,只要在其中插入“class_weight”,内核就会死掉。我运行了完全相同的模型,但没有 class_weight 并且没有问题。我在 Macbook Pro M1 芯片 16gb RAM、python 3.8 和 tensorflow 2.4 上使用 jupyter notebook (6.2.0)。 谢谢

【问题讨论】:

  • 请显示代码。我经常使用 class_weight 并且效果很好
  • @GerryP 你有和我一样的机器吗?
  • nope windows pc.

标签: python tensorflow keras kernel


【解决方案1】:

似乎与 M1 处理器有关。在这个完全相同的教程和我正在研究的另一个模型上,我在我的 Mac Mini (M1) 上遇到了同样的问题。我提交了https://github.com/apple/tensorflow_macos/issues/275

【讨论】:

  • 我在使用 Mac M1 时遇到了同样的问题。到目前为止,您找到任何解决方案了吗?
【解决方案2】:

我怀疑您计算的 class_weight 不正确。假设您有 4 个类,标记为 0、1、2、3。对于每个类,假设样本分布为

class     samples
  0         500
  1         1000
  2         1500
  3         2000

现在你要做的是找到样本数量最多的类,称为 max_samples。然后给出给定类的类权重 weight= max_samples/ 类中的样本。类权重是一本字典。对于上面的例子

max_samples=2000
class_weight= {0: 2000/500, 1: 2000/1000, 2:2000/1500, 3:2000/2000}
class_weight= {0: 4, 1: 2, 2: 1.33333, 4:1.0}

对于样本最少的 0 类,在损失函数中使用 4 的类权重来抵消 4 类样本数是 4 倍的事实。/

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2020-04-06
    • 2020-02-28
    • 2022-01-24
    • 2018-12-11
    相关资源
    最近更新 更多