R - Keras 代码以任意数量的class_weigths运行



我用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))

两者都工作正常。

> class_weights只是为了告诉模型哪个类是"最重要的" 如果排除其中之一,则它仅具有默认权重。

看到所有权重都是 1,您可以删除 class_weight 参数,因为它不执行任何操作。

从文档中:

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

最新更新