Tensorflow/Keras发现了两个最相似的过滤器
我有一个tensorflow/keras CNN。它有层,有些是二维的。在给定的层中,我希望有效地找到Conv2D中最相似的两个过滤器。 layer.weights是形状高度、宽度、深度过滤器长度的列表。 我想比较每个元素在高度、宽度和深度上的差异,或者可能是sqrtdiff^2,然后求和,这样的差异就是一个浮点值 如果T1是层权重[idx1],T2是层权重[idx2] 然后比较为tf.sqrttf.reduce_sumtf.squared_difference1,T2 我想将每个过滤器与其他过滤器进行比较,取3个最小的差异。第一个总是零,其中T1和T2是相同的张量,self 显然,我可以做嵌套循环,但这不是功能性的和漂亮的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 我想将每个过滤器与其他过
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之间的差异
然后可以进行筛选以查找所需的元素