Keras自定义损失函数-ValueError:操作具有“无”梯度

时间:2019-10-26 20:25:01

标签: python-3.x keras loss-function

我想创建自定义损失函数,但总是出现相同的错误:“ ValueError:操作具有None用于渐变。请确保所有操作都定义了渐变(即可区分)。没有渐变的常见操作:K.argmax,K.round,K.eval。“

我创建了一个简单的示例,其中我的损失函数是在y_true中计算的。

def build_shared_model(inputs_count, outputs_count):
    x = y = Input(shape=(inputs_count,))
    y = Dense(16)(x)
    y = Activation('relu')(y)
    y = Dense(16)(y)
    y = Activation('relu')(y)
    y = Dense(outputs_count)(y)

    def custom_loss(y_true, y_pred):
        return y_true

    model = Model(x, y)
    model.compile(Adam(lr=0.001), loss=custom_loss)
    return model

if __name__ == '__main__':
    network = build_shared_model(4, 1)

    x = np.zeros((10, 4)) # dump input instead real inputs 
    y = np.zeros(10) # dump y_true instead some equation

    network.fit(x, y, verbose=0)

我不知道要修理它。你能帮我吗?

0 个答案:

没有答案