当前位置: 首页 > 面试题库 >

Keras自定义损失功能:访问当前输入模式

商宏爽
2023-03-14
问题内容

在Keras(具有Tensorflow后端)中,当前输入模式可用于我的自定义损失函数吗?

当前输入模式定义为用于产生预测的输入向量。例如,考虑以下内容:X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42, shuffle=False)。然后,当前输入模式是与y_train(在损失函数中称为y_true)关联的当前X_train向量。

在设计自定义损失函数时,我打算优化/最小化一个需要访问当前输入模式而不只是当前预测的值。

我已经看过https://github.com/fchollet/keras/blob/master/keras/losses.py

我还浏览了“不只是y_pred,y_true的成本函数”

我还熟悉前面的示例,以生成定制的损失函数:

import keras.backend as K

def customLoss(y_true,y_pred):
    return K.sum(K.log(y_true) - K.log(y_pred))

大概(y_true,y_pred)在其他地方定义。我浏览了源代码,但没有成功,我想知道我是否需要自己定义当前的输入模式,或者我的损失函数是否已经可以访问此输入模式。


问题答案:

您可以将损失函数包装为内部函数,并将输入张量传递给它(如将其他参数传递给损失函数时通常这样做)。

def custom_loss_wrapper(input_tensor):
    def custom_loss(y_true, y_pred):
        return K.binary_crossentropy(y_true, y_pred) + K.mean(input_tensor)
    return custom_loss

input_tensor = Input(shape=(10,))
hidden = Dense(100, activation='relu')(input_tensor)
out = Dense(1, activation='sigmoid')(hidden)
model = Model(input_tensor, out)
model.compile(loss=custom_loss_wrapper(input_tensor), optimizer='adam')

您可以验证input_tensor损失值(主要是K.mean(input_tensor)零件)是否会随着X传递给模型的不同而发生变化。

X = np.random.rand(1000, 10)
y = np.random.randint(2, size=1000)
model.test_on_batch(X, y)  # => 1.1974642

X *= 1000
model.test_on_batch(X, y)  # => 511.15466


 类似资料:
  • 在Keras(Tensorflow后端)中,当前输入模式是否可用于我的自定义损失函数? 当前输入模式定义为用于产生预测的输入向量。例如,考虑以下代码:<代码> xyStand、xyTest、yyStand、yyTest= TrimeTestSythRead(x,y,TestLySt= 0.33,RealthObjySt==42,Suffle=false)< /Cord>。然后,当前输入模式是与y_

  • 我正在尝试使用Keras创建自定义损失函数。我想根据输入计算损失函数并预测神经网络的输出。 我尝试在Keras中使用自定义loss函数。我认为y_true是我们为训练提供的输出,y_pred是神经网络的预测输出。下面的损失函数与 Keras 中的“mean_squared_error”损失相同。 我想使用神经网络的输入也计算自定义损失函数除了mean_squared_error损失。有没有办法将输

  • 我在Tensorflow后端使用Keras。我想创建一个自定义损失函数,它将获得两个直方图之间的欧几里德距离,但我得到了以下错误: TypeError:“Mul”Op的输入“y”的类型float32与参数“x”的类型int32不匹配。 因此,我不知道如何定义我的损失函数。 我试图修改代码,但我得到另一个错误。“h_true=tf.cast(h_true,dtype=tf.dtypes.float3

  • 问题内容: 在Keras中,如果您需要自定义损失以及其他参数,我们可以像https://datascience.stackexchange.com/questions/25029/custom- loss-function-with-additional-parameter-in- 凯拉斯 当我训练模型时,上述方法有效。但是,一旦训练了模型,我将很难加载模型。当我尝试在load_model中使用c

  • 嗨,我一直试图使一个自定义损失函数在kerasdice_error_coefficient。它有它的实现在张量板和我尝试使用相同的函数在keras与张量流但它不断返回一个NoneType当我使用model.train_on_batch或model.fit在那里,因为它给适当的值时,使用在模型中的指标...能不能请人帮帮我我该怎么办?我尝试过跟随像Keras-FCN这样的库,在那里他使用了自定义损失

  • 我手头有一个问题,它优化了一个损失函数,而不是y_pred和y_true的函数。通过Keras留档后,我发现所有自定义损失函数必须是y_pred和y_true的函数。 在Keras中是否有其他方法实现我的损失函数?