有没有办法制作一个模型,该模型创建一个掩码以在将掩码数据馈送到另一个网络之前丢弃某些输入?

Is there a way to make a model that creates a mask to drop certain inputs before feeding the masked data to another network?

这可能是一个有点愚蠢的问题,但我正在尝试构建一个模型,该模型能够在将过滤后的输出提供给另一个网络之前过滤掉输入。

例如,我有一张图像要与包含大约 100 张图片的数据库进行匹配,然后我将应用第一个网络执行一些操作,输出最有可能正确匹配的前 10 张图片.之后,我会应用第二个网络,使用第二个网络重新匹配前 10 张图片。

INPUT --> | NETWORK 1 | --> FILTERED OUTPUT --> | NETWORK 2 | --> FINAL OUTPUT

想知道是否有一种方法可以实现这种过滤行为,将过滤后的输出像那样馈送到第二个模型。

你也许可以看一下使用 numpy 的布尔索引数组

    >>> import numpy as np
    >>> x = np.array(range(20))
    >>> x
    array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 
    10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
    >>> x[x > 10]
    array([11, 12, 13, 14, 15, 16, 17, 18, 19])

x > 10 returns 一个包含 20 个布尔值的数组,因此您可以尝试这样的操作:

    x = pic_arr[network1(pic_arr)]
    network2(x)
  

其中 pic_arr 是包含您的图片的数组,而 network1 returns 是包含要 select.

图片的布尔值列表