1
假設我有一個帶有3個通道的(7,7,3)圖像。 如何創建一個使用圖像的矩陣A,使每一行只包含相鄰像素的成對連接?我知道這可以很容易地在python中用for循環來完成,但我們如何在tensorflow圖中做到這一點?矩陣A的從張量流張量中創建一個新的矩陣
例子:
[[pixel1 pixel2],
[pixel1 pixel3],
[pixel1 pixel4],
.....so on ]]
假設我有一個帶有3個通道的(7,7,3)圖像。 如何創建一個使用圖像的矩陣A,使每一行只包含相鄰像素的成對連接?我知道這可以很容易地在python中用for循環來完成,但我們如何在tensorflow圖中做到這一點?矩陣A的從張量流張量中創建一個新的矩陣
例子:
[[pixel1 pixel2],
[pixel1 pixel3],
[pixel1 pixel4],
.....so on ]]
你可以使用一些矩陣代數做到這一點。爲了說明這個想法,假設你想爲一維矢量做這個。
你可以用自身的位移版本堆向量獲得對鄰居
n = 5
a = tf.range(n)
left = tf.stack([a[1:], a[:n-1]])
left = tf.transpose(left)
的通過斬去尾巴和重複用於不同的偏移,你可以得到左鄰居和右鄰居
right = tf.stack([a[:n-1], a[1:]])
right = tf.transpose(right)
要再次忽略邊緣效應,你可以砍下兩端和堆棧到3級矩陣
stacked_neighbors = tf.stack([left[:-1], right[1:]])
我們交錯鄰居,我們可以使用一個技巧與轉和重塑。
stacked_neighbors = tf.transpose(stacked_neighbors, [1, 0, 2])
由於數據存儲在行優先順序,重塑成比原來少尺寸,重塑變平左側
過量尺寸stacked_neighbors = tf.reshape(stacked_neighbors, [6,2])
@Yarslav,這是一個天才! :) –