如何在自定义损失函数中重复张量的值?

时间:2020-05-29 15:59:53

标签: r tensorflow keras

我在R中使用keras(v 2.3.0,带有tensorflow v 2.2),试图使用keras后端函数编写自定义损失函数。

在自定义损失函数中,我基本上有张量

\n

现在要创建一个a <- 2.5 b <- 1:5 a_k <- k_constant(a) b_k <- k_constant(b) 形式的c_k,因此a_k的值以b_k的形式重复。

通过测试各种事物,我发现以下所有内容在执行时都有效:

tf.Tensor([2.5 2.5 2.5 2.5 2.5], shape=(5,), dtype=float32)

但是当我在c_k1 <- k_constant(a_k, shape = k_shape(b_k)) c_k2 <- k_constant(a_k, shape = length(b_k)) c_k3 <- k_constant(k_eval(a_k), shape = length(b_k)) 中使用这些自定义损失函数时,这些选项都不起作用

以下是错误消息:

model %>% compile

以下至少不会产生错误:

c_k1 <- k_constant(a_k, shape = k_shape(b_k))
# RuntimeError: Evaluation error: NotImplementedError: Cannot convert a symbolic Tensor (loss_31/dense_65_loss/Shape:0) to a numpy array..

c_k2 <- k_constant(a_k, shape = length(b_k))
RuntimeError: Evaluation error: TypeError: Expected float32, got <tf.Tensor 'dense_67_target:0' shape=(None, None) dtype=float32> of type 'Tensor' instead..

c_k3 <- k_constant(k_eval(a_k), shape = length(b_k))
RuntimeError: Evaluation error: AttributeError: 'Tensor' object has no attribute '_numpy'.

但是2.5的值不是固定的,因为它是c_k <- k_constant(2.5, shape = length(b_k)) 的值。

如何在损失函数中正确使用y_true或其他函数来实现此目的?

0 个答案:

没有答案