【发布时间】:2025-11-24 14:45:01
【问题描述】:
我有一个如下矩阵:
[0 0 1 1]
[0 0 1 1]
[0 0 0 0]
[0 0 0 0]
我需要从左上到右将它分成多个3x3 矩阵。这有点像3x3 在矩阵上的滑动。在此示例中,我们将有 4 3x3 矩阵,如下所示:
[0 0 1] [0 1 1]
1 = [0 0 1] 2 = [0 1 1]
[0 0 0] [0 0 0]
[0 0 1] [0 1 1]
3 = [0 0 0] 4 = [0 0 0]
[0 0 0] [0 0 0]
我已经使用tf.extract_image_patch 进行了尝试,得到了 4 个矩阵,但我仍然不确定如何在 Tensorflow 中为这些矩阵做某种运行产品。或者,更好地实现运行产品,而无需预先计算单独的矩阵。
对于正在运行的产品,我的意思是:我需要按元素对 1-4 个以上的矩阵进行多重处理,并且需要得到 1 3x3 矩阵。例如,1&2 矩阵将相乘,结果将与矩阵3 相乘,结果将再次与矩阵4 相乘。这个操作应该让我开始补丁([[1 1], [1 1]]) 在我的原始矩阵中,如下所示:
[0 0 1]
res = [0 0 0]
[0 0 0]
完成后,我需要将此操作作为我网络的一部分,也许是一个 Tensorflow 层。
如果有人可以帮助我实现这一目标,我将不胜感激。谢谢。
编辑
这似乎是在列表中将矩阵相乘的一种方法,但我仍在寻找1) 将矩阵分割成多个部分并以更好的方式将它们相乘,2) 将其作为一个层添加到网络中:
tf.scan(lambda a, b: tf.multiply(tf.squeeze(a), tf.squeeze(b)), original)
【问题讨论】:
标签: python-3.x tensorflow