Tensorflow模型的输出是否可以作为Keras自定义损失函数的一部分使用?

时间:2019-03-28 23:42:29

标签: python tensorflow keras deep-learning

我想将模型提取特征的距离用作损失函数的一部分,类似于this paper中关于感知损失的描述。

我主要使用带有Tensorflow的Keras作为后端。如果我有Keras预先训练的模型,则可以将其输出用作此类自定义损失的一部分:(示例来自GAN代码,但我不认为会失去一般性)

discriminator = DiscriminatorCNN(...) #returns Keras Model
discriminator.compile(...)

def adversary_loss_factory(discriminator):

    def adversary_loss(y_true, y_pred):
        prediction = discriminator(y_pred)
        prediction = -1 * K.log(prediction)
        return prediction

    return adversary_loss

然后adversary_loss可以用作其他模型的损失。

我的问题是,我正在使用的特定的预训练模型仅可用作Tensorflow模型。我认为可以这样做,因为它是相同的后端,但是我不确定如何开始。

我正在使用this repository中的代码,看来您可以在正确加载模型后通过此代码获得嵌入层:

embeddings = tf.get_default_graph().get_tensor_by_name("embeddings:0")

我知道您可以使用sess.run来获取特定批次的嵌入内容,但这似乎并没有区别,以至于将其放入自定义损失中。有没有办法将这些嵌入转换成类似Keras模型的功能?

0 个答案:

没有答案