【问题标题】:Keras backend (tensorflow) vs KerasKeras 后端(张量流)与 Keras
【发布时间】:2019-04-03 08:28:20
【问题描述】:

我想自定义一个 Keras 损失函数,但我不是很懂。

如果我使用 tensorflow 作为 Keras 的后端,我需要使用来自 keras.backend 的函数还是可以直接使用来自 tensorflow 的函数。

我只看到人们使用来自keras.backend 的函数而不是来自 tensorflow 的帖子(即使 tensorflow 有更多的功能)。有理由这样做吗?

举个玩具例子:

from keras import backend as K 
import tensorflow as tf

def loss_keras(y_true, y_pred):

    square_error = K.square(y_pred - y_true)
    loss = K.mean(square_error)

    return loss

def loss_tf(y_true, y_pred):

    square_error = tf.squared_difference(y_pred, y_true)
    loss = tf.reduce_mean(square_error)

    return loss

这两个函数都运行良好,但一个是直接使用 tensorflow,另一个是使用keras.backend 函数。

我知道这是一个愚蠢的例子,但是当你想做更复杂的事情时,我认为使用 tensorflow 会比 keras 函数更容易,因为可用的函数更多

【问题讨论】:

  • 如果您使用 keras 后端,您的代码将与所有支持的 keras 后端一起运行,而不仅仅是 tensorflow。如果您直接使用 tensorflow 函数,则您的代码将无法在 theano 后端运行。
  • @BenDes 您可能会发现this answer 很有用。
  • 谢谢你们!

标签: python tensorflow keras


【解决方案1】:

正如 cmets 中所指出的和 this answer 中所述,“在以下情况下,使用 Keras 后端函数(即 keras.backend.*)是必要的:1)需要预处理或增加参数传递给 Tensorflow 或 Theano 后端的实际函数或对返回的结果进行后处理,或者 2)您想编写一个适用于所有 Keras 支持的后端的模型。”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多