【问题标题】:keras code runs with arbitrary number of class_weigthskeras 代码以任意数量的 class_weight 运行
【发布时间】:2018-08-08 10:05:51
【问题描述】:

我在带有 R 的 Keras 中使用 class_weights。代码运行良好,但我发现了一件奇怪的事情。我可以给出任意数量的 class_weights 而不会出错。

我的模型分为 9 个类,所以最初我以这种方式拟合模型

 model$fit( x= input_im, y= input_lab, batch_size = batch_size, epochs = 1L , class_weight = c('0' = 1,'1' = 1,'2' = 1,'3' = 1,'4' = 1,'5' = 1,'6' = 1,'7' = 1, '8' = 1))

但我发现,如果我删除或添加一个类权重,我的代码也能正常运行。

model$fit( x= input_im, y= input_lab, batch_size = batch_size, epochs = 1L , class_weight = c('0' = 1,'1' = 1,'2' = 1,'3' = 1,'4' = 1,'5' = 1,'6' = 1,'7' = 1) 

 model$fit( x= input_im, y= input_lab, batch_size = batch_size, epochs = 1L , class_weight = c('0' = 1,'1' = 1,'2' = 1,'3' = 1,'4' = 1,'5' = 1,'6' = 1,'7' = 1, '8' = 1, '9' = 1))

两者都可以正常工作。

【问题讨论】:

    标签: r keras


    【解决方案1】:

    class_weights 只是用来告诉模型哪个类是“最重要的” 如果您排除其中一个,则它只是具有默认权重。

    看到你所有的权重都是 1,你可以删除 class_weight 参数,因为它没有任何作用。

    来自文档:

    可选的命名列表映射索引(整数)到权重(浮点)值,用于加权损失函数(仅在训练期间)。这对于告诉模型“更加关注”来自代表性不足的类的样本很有用。

    【讨论】:

    • all 1 只是为了测试我想进一步改变它们。所以你的意思是,如果我添加的权重多于类,它只会忽略权重,如果我提供的类太少,它只会分配默认类。
    • 如果你添加很多权重,你可能会得到一个错误,除此之外,我认为你是正确的。
    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多