Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow/Keras发现了两个最相似的过滤器_Tensorflow_Keras - Fatal编程技术网

Tensorflow/Keras发现了两个最相似的过滤器

Tensorflow/Keras发现了两个最相似的过滤器,tensorflow,keras,Tensorflow,Keras,我有一个tensorflow/keras CNN。它有层,有些是二维的。在给定的层中,我希望有效地找到Conv2D中最相似的两个过滤器。 layer.weights是形状高度、宽度、深度过滤器长度的列表。 我想比较每个元素在高度、宽度和深度上的差异,或者可能是sqrtdiff^2,然后求和,这样的差异就是一个浮点值 如果T1是层权重[idx1],T2是层权重[idx2] 然后比较为tf.sqrttf.reduce_sumtf.squared_difference1,T2 我想将每个过滤器与其他过

我有一个tensorflow/keras CNN。它有层,有些是二维的。在给定的层中,我希望有效地找到Conv2D中最相似的两个过滤器。 layer.weights是形状高度、宽度、深度过滤器长度的列表。 我想比较每个元素在高度、宽度和深度上的差异,或者可能是sqrtdiff^2,然后求和,这样的差异就是一个浮点值

如果T1是层权重[idx1],T2是层权重[idx2] 然后比较为tf.sqrttf.reduce_sumtf.squared_difference1,T2

我想将每个过滤器与其他过滤器进行比较,取3个最小的差异。第一个总是零,其中T1和T2是相同的张量,self

显然,我可以做嵌套循环,但这不是功能性的和漂亮的


GPU中是否有内置的tensorflow或keras函数可以快速完成此操作?

您的描述不太清楚,但我假设权重的形状是[过滤计数、高度、宽度、深度]。如果filter_count沿着不同的轴,则必须相应地修改减少_sum的参数

您可以使用广播来并行化此过程

differences = tf.sqrt(
    tf.reduce_sum(
      tf.squared_difference(
        tf.expand_dims(thelayer.weights,0), 
        tf.expand_dims(thelayer.weights,1),

        ),
      (-1,-2,-3)
    )
)
这将导致形状张量[filter_count,filter_count],其中元素差异[i,j]测量过滤器权重i和j之间的差异

然后可以进行筛选以查找所需的元素