簡體   English   中英

如何在張量流中改變幀來生成CNN模型?

[英]How to generate CNN model with changing frames in tensorflow?

我想在Tensorflow中構建一個有條件的CNN模型,但我遇到了一些麻煩。

with shape [64, ?, 50, 1] and another matrix named with shape [64, ?, 1, 130]. 假設存在一個名為 [64,?,50,1]的特征的矩陣和另一個名為 [64,?,1,11]的矩陣。

fisrt dim是批量大小,第二個dim是指幀數( 兩個矩陣的這個dim中的值在每個批次中是相同的,但在不同批次中是不同的 )。 第三個是特征維度,最后一個是通道號。

in tensorflow. 我想連接兩個矩陣,這意味着我們可以得到一個形狀為[64,?, ]的矩陣,並在中進行conv2d。

但問題在於,由於第三個暗淡的差異,我無法連接這兩個矩陣。 然后我做了如下:

    x_shapes = x.get_shape()
    y_shapes = y.get_shape()
    return tf.concat(3, [x, y*tf.ones([x_shapes[0], x_shapes[1], x_shapes[2], y_shapes[3]])])

但它不起作用,因為第二個昏暗是不知道的。

我想知道有沒有辦法解決這個問題?

謝謝

雖然從你的問題中不清楚,看起來你想在連接之前在第三維上廣播第二個張量,其形狀為[64, ?, 1, 130] ,你稱之為特征維度。 請注意, tf.concat需要匹配所有維度,但您要連接的維度除外。 tf.concat的文檔:

輸入張量的維數必須匹配,除concat_dim之外的所有維度必須相等。

要沿着要素維度進行廣播,使用tf.tile而不是像你正在做的所有張量相乘要便宜得多。 以下是如何使用tf.tile

tf.concat(3, [x, tf.tile(y, [1, 1, x_shapes.as_list()[2], 1])])

在您的情況下,由於y的第三維是靜態已知的,因此上述代碼有效。 如果不是這種情況,您可以將tf.tile的第二個參數形成如下:

tf.tile(y, tf.concat(0, [[1], [1], tf.shape(x)[2:3], [1]]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM