【问题标题】:How to run keras model twice before loss?如何在丢失之前两次运行keras模型?
【发布时间】:2019-01-29 05:08:36
【问题描述】:

我想计算一个损失函数,它在不同的输入上两次使用网络的输出。例如,假设,

first_output = model(first_input)
second_output = model(second_input)
loss = mean_absolute_error(first_output, second_output)

如何在 tensorflow 或 keras 中实现这一点?

更新:谢谢大家的回复。我想在 keras 或 tensorflow 中重新实现this paper。正如其中所解释的,作为 GAN 中的鉴别器的“critic”网络有两个输入,并一个接一个地运行它们,并根据输出和计算梯度计算损失函数。主要问题是如何在 tensorflow 或 keras 中实现?

【问题讨论】:

  • 你为什么需要那个?
  • How to concatenate two layers 可能会有所帮助。
  • 这里是the paper author's GitHub repository implementing SegAN with PyTorch。我认为您很难让该网站上的某个人为您将其翻译成 Keras/TF,但我们绝对可以帮助您解决遇到的具体问题!
  • 你有什么问题?您能否向我们展示一个没有给您想要的东西的具体示例,并描述您期望得到的东西?
  • 抱歉我的问题太笼统了。对我来说有问题的部分是,在最初的实现中,作者训练了一次“critic”网络,输入图像被“segmentor”网络的输出屏蔽,然后在计算损失之前再次用地面屏蔽输入图像。所以基本上,他在获得损失之前通过相同的模型运行两个单独的输入。据我了解,在 pytorch 中,它是可能的,因为 pytorch 是动态的。但是如何用张量流做到这一点?我目前的猜测是在两个输入的两个模型之间共享批评者层并具有单一损失?

标签: python tensorflow keras deep-learning


【解决方案1】:

您可以尝试使用keras.layers.merge。我以前用它来制作连体网络,例如:

first_output = model(first_input)
second_output = model(second_input)
mae = lambda x: mean_absolute_error(x[0], x[1])
distance = merge(inputs=[first_output, second_output],
                 mode=mae,
                 output_shape=lambda x: x[0],
                 name='mean_absolute_error')

对于连体网络示例,您通常会通过以下方式对此距离度量进行一些预测:

prediction = Dense(2, activation='softmax', name='prediction')(distance)
model = Model([first_input, second_input], prediction, name='siamese_net')
model.compile(optimizer=Adam(),
              loss=some_loss_function)

在该示例中使用 keras.models.Modelkeras.layers.Dense

请注意,keras.layers.merge(我相信)在最新版本的 Keras 中已被弃用,这真的很可惜。我认为要对最现代的 Keras 做类似的事情,您需要使用 keras.layers.Concatenate 来组合两个结果,然后使用 keras.layers.Lambda 来应用该功能。

【讨论】:

  • 对于这样的模型来说,预测所有输入的零点不是最优的吗?
  • @MikhailBerlinkov 取决于some_loss_function 是什么以及您的标签是什么样的。在显示的示例中,以及在大多数连体网络中,您输出的是网络是否认为两个输入相同或不同。如果你的model 总是输出零,大概你总是会预测同一个类,并且你的数据集不会比基线好。所以我会说不是最优的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2021-05-16
  • 1970-01-01
  • 2019-02-26
  • 2015-11-16
相关资源
最近更新 更多