相关疑难解决方法(0)

循环超过张量

我试图以python的方式处理一个可变大小的张量,如下所示:

# X is of shape [m, n]
for x in X:
    process(x)
Run Code Online (Sandbox Code Playgroud)

我试图使用tf.scan,问题是我想处理每个子张量,所以我试图使用嵌套扫描,但是我启用了它,因为tf.scan可以使用累加器,如果没有发现它将把elems的第一个条目作为初始化器,我不想这样做.举个例子,假设我想在张量的每个元素中添加一个(这只是一个例子),我想逐个元素地处理它.如果我运行下面的代码,我将只添加一个子张量,因为扫描将第一个张量视为初始化器,以及每个子张量的第一个元素.

import numpy as np
import tensorflow as tf

batch_x = np.random.randint(0, 10, size=(5, 10))
x = tf.placeholder(tf.float32, shape=[None, 10])

def inner_loop(x_in):
    return tf.scan(lambda _, x_: x_ + 1, x_in)

outer_loop = tf.scan(lambda _, input_: inner_loop(input_), x, back_prop=True)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    rs = sess.run(outer_loop, feed_dict={x: batch_x})
Run Code Online (Sandbox Code Playgroud)

有什么建议 ?

python tensorflow

13
推荐指数
2
解决办法
3万
查看次数

自定义损失函数中的张量索引

基本上,我希望我的自定义损失函数在通常的 MSE 和从不同索引中减去值的自定义 MSE 之间交替。

为了澄清,假设我有一个 [1, 2, 4, 5] 的 y_pred 张量和一个 [2, 5, 1, 3] 的 y_true 张量。在通常的 MSE 中,我们应该得到:

return K.mean(K.squared(y_pred - y_true))
Run Code Online (Sandbox Code Playgroud)

这将执行以下操作:

[1, 2, 4, 5] - [2, 5, 1, 3] = [-1, -3, 3, 2]

[-1, -3, 3, 2]² = [1, 9, 9, 4]

平均值([1, 9, 9, 4]) = 5.75

我需要我的自定义损失函数来选择这个平均值和其他从 y_pred 张量切换索引 1 和 3 之间的最小值,即:

[1, 5, 4, 2] - [2, 5, 1, 3] = [-1, 0, 3, 1]

[-1, 0, 3, …

neural-network keras tensorflow

7
推荐指数
1
解决办法
3061
查看次数

Keras 中的 Tensorflow 自定义损失函数 - 在张量上循环

我正在尝试在 Keras 中编写自定义损失函数,如下所示:Keras 中的自定义损失函数

我的自定义函数应该降低小于 25 的值的影响。为此,该函数将首先调用tf.clip_by_value(因此,任何小于 25 的值都将变为 25)yTrueyPred(如上面的链接所示)。接下来,为了减少这些值的影响,当一个值 inyTrue等于 25 时,将对应的值yPred改为 yPred[i] - (yPred[i] - yTrue[i])/2。最后,该函数将在这两个张量上返回“binary_crossentropy”的结果。

我有两个主要问题:

  1. 我如何实现这个自定义损失函数?我在迭代张量时遇到问题(如Looping over a tensor 中所示
  2. 我提出的函数是一个很好的实现来减少这些值的影响还是有更好的选择?

在此先感谢您的帮助

python keras tensorflow

5
推荐指数
0
解决办法
1187
查看次数

标签 统计

tensorflow ×3

keras ×2

python ×2

neural-network ×1