Python 具有Keras的不平衡数据集的多重损失
我的型号: 我建立了一个暹罗网络,有两个输入和三个输出。所以我的损失函数是:Python 具有Keras的不平衡数据集的多重损失,python,keras,loss-function,Python,Keras,Loss Function,我的型号: 我建立了一个暹罗网络,有两个输入和三个输出。所以我的损失函数是: total loss = alpha( loss1) + alpah( loss2) + (1_alpah) ( loss3) loss1和loss2是分类交叉熵损失函数,用于从总共8个类中对类标识进行分类。 loss3是相似性损失函数(欧氏距离损失),用于验证两个输入是来自同一类还是不同类 我的问题如下: 如果我有不同的损失,我想使用变量alpha对它们进行加权,它的值取决于历元数。因此,我必须通过回调设置值pfa
total loss = alpha( loss1) + alpah( loss2) + (1_alpah) ( loss3)
loss1
和loss2
是分类交叉熵
损失函数,用于从总共8个类中对类标识进行分类。
loss3
是相似性损失
函数(欧氏距离损失),用于验证两个输入是来自同一类还是不同类
我的问题如下:
alpha
对它们进行加权,它的值取决于历元数。因此,我必须通过回调设置值pfalpha
。我的问题是,是否可以通过model.complie
中的loss\u weights
传递该α变量,该变量的值随历元数(即非标量)的变化而变化。文件说:alpha = K.variable(0., dtype=tf.float32)
def changeAlpha(epoch,logs):
new_alpha = some_function(epoch)
K.set_value(alpha, new_alpha)
return
alphaChanger = LambdaCallback(on_epoch_end=changeAlpha)
model.compile(loss= [loss1, loss2, loss3], loss_weights = [alpha, alpha, (1-alpha)])
model.fit()中使用class\u wights
。因此,对于三个损失的同一模型,我只想将类权重应用于分类交叉熵损失(损失1和损失2),因此,如果我将其传递给模型,它将对两个损失都有效,并且除了第三个损失之外。fit
?知道第三个损失是自定义损失函数
model.compile(度量=['out1':'accurity','out2':accurity']])
?但最终的精度必须是两者的平均值,我可以通过构建自己的自定义度量来解决这个问题。但这两个指标的加权和是否存在问题