【发布时间】: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