Keras斜切切片模型逐层使用,不输出而直接损失

我有两个输出,而其中只有一个(x1)是模型的输出。我也想获得第二(x2),但仅用于损失。

import tensorflow as tf

def myloss2(sigma):
    gtsigma = 0.5
    kl = sigma / gtsigma

    def temp(gt,pr):
        return kl + (gtsigma ** 2 + (pr - gt) ** 2) / (2 * sigma ** 2) - 0.5

    return temp

def buildmodel2():
    inputs = tf.keras.Input(shape=(10,))
    x1 = tf.keras.layers.Dense(1,activation='linear')(inputs)
    x2 = tf.keras.layers.Dense(1,activation='sigmoid')(inputs)
    model = tf.keras.Model(inputs,x1)
    model.compile(loss=myloss2(x2),optimizer=tf.keras.optimizers.Adam())
    return model

现在我看不到x2中的model2.summary()层,因此无法切片模型以获取其输出。 是的,我可以这样:

def myloss(data):
    pr,sigma,gt = data
    gtsigma = 0.5
    kl = sigma / gtsigma
    return kl + (gtsigma ** 2 + (pr - gt) ** 2) / (2 * sigma ** 2) - 0.5

def buildmodel():
    inputs = tf.keras.Input(shape=(10,))
    gt = tf.keras.Input(shape=(10,activation='sigmoid')(inputs)
    out = tf.keras.layers.Lambda(myloss)([x1,x2,gt])
    model = tf.keras.Model([inputs,gt],out)
    model.compile(loss=lambda a,b: b,optimizer=tf.keras.optimizers.Adam())
    return model

但是对我来说,使用这样的模型并不方便。 还有其他方法吗?

sophiezelmani927 回答:Keras斜切切片模型逐层使用,不输出而直接损失

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3131036.html

大家都在问