首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在keras中实现论文“基于深度生成模型的语义图像修复”的损失函数

如何在keras中实现论文“基于深度生成模型的语义图像修复”的损失函数
EN

Stack Overflow用户
提问于 2017-10-11 22:21:14
回答 1查看 194关注 0票数 0

我已经在celebA数据集上训练了GAN。之后,我将G和D分开。然后,我从celebA训练数据集中挑选一幅图像,比方说yTrue,现在我希望找到G可以生成的最接近yTrue的图像,比方说yPred。因此G的输出损失是||yTrue - yPred||_2^{2},我最小化了它w.r.t生成器输入(正态分布的潜变量)。下面是给出好结果的代码。现在的问题是,我还想在第一行添加先验损失( 1 (1-D(G(Z),但是我不知道怎么做,因为D现在没有连接到G,如果我在第一行直接添加k.mean(k.log(1-D.1(G.output),它会返回不允许的数值数组而不是张量。

代码语言:javascript
复制
    `loss = K.mean(K.square(yTrue - gf.output))
     grad = K.gradients(loss,[gf.input])[0]
     fn = K.function([gf.input], [grad])
     generator_input = np.random.normal(0,1,[1,100])
     for i in range(5000):
         grad1 = fn([generator_input])
         generator_input -= grads[0]*.01
     recovered = gf.predict(generator_input)` 
EN

回答 1

Stack Overflow用户

发布于 2017-10-12 01:26:47

在keras中,您可以获得最终输出以创建损失函数。然后,你将不得不训练整个网络来实现这种损失。(Train G+D作为单个模型加入)。

在损失函数中,您将使用y_truey_pred,并使用它们进行比较:

PS:如果MSE没有接受鉴别器的输出,请更详细地说明您的问题。

代码语言:javascript
复制
import keras.backend as K

def customLoss(yTrue,yPred):

    mse = K.mean(K.square(yTrue-yPred)
    prior = K.mean(K.log(1-yPred))
    return mse + prior

编译模型时传递此函数

代码语言:javascript
复制
discriminator.compile(loss=customLoss,optimizer=.....)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46690696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档