栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Keras中的自定义加权损失功能可对每个元素进行称重

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Keras中的自定义加权损失功能可对每个元素进行称重

model.fit
批量大小是默认32,这就是这个数字的来源。这是正在发生的事情:

  • custom_loss_1
    张量中
    K.abs(y_true-y_pred)
    有形状
    (batch_size=32, 5)
    ,而在numpy数组中
    weights
    有形状
    (100, 5)
    。这是无效的乘法,因为维数不一致并且无法应用广播。

  • custom_loss_2
    这个问题中不存在,因为您要乘以2个具有相同形状的张量
    (batch_size=32, 5)

  • custom_loss_3
    问题是相同
    custom_loss_1
    的,因为转换
    weights
    成Keras变量不改变它们的形状。


更新: 似乎您想对每个训练样本中的每个元素赋予不同的权重,因此

weights
数组
(100,5)
确实应具有形状。在这种情况下,我将权重的数组输入模型中,然后在损失函数中使用该张量:

import numpy as npfrom keras.layers import Dense, Inputfrom keras import Modelimport keras.backend as Kfrom functools import partialdef custom_loss_4(y_true, y_pred, weights):    return K.mean(K.abs(y_true - y_pred) * weights)train_X = np.random.randn(100, 5)train_Y = np.random.randn(100, 5) * 0.01 + train_Xweights = np.random.randn(*train_X.shape)input_layer = Input(shape=(5,))weights_tensor = Input(shape=(5,))out = Dense(5)(input_layer)cl4 = partial(custom_loss_4, weights=weights_tensor)model = Model([input_layer, weights_tensor], out)model.compile('adam', cl4)model.fit(x=[train_X, weights], y=train_Y, epochs=10)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668431.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号