2017-05-05 44 views
1

我訓練的網絡圖像的每個切片,使得張量t1之一具有如下形狀:乘以權重

shape(t1) = [?, 300, 300, 10]

和另一張量t2具有形狀:

shape(t2) = [?, 10]

我想張量的每個片段t2張量的每個元素[300, 300]張量t1。任何機構知道如何做到這一點?到目前爲止,我已經寫了以下內容:

def mul_concat(I): 
    A = [] 
    for i in range(d1.shape[1].value): 
     A.append(d1[:, i]*I[:, :, :, i])) 
return reduce(lambda a, b: a+b, A) 

不過,我得到因爲batch size尺寸的誤差。任何想法如何解決這個問題?

+0

張量切片't1'的維數爲[300,300,10]'。你能否通過將張量的形狀固定爲1來給出一個乘法的具體例子? –

+0

我打算說批次的每個元素的切片。 – Shivam

回答

0

如果您重塑t2塑造[?, 1, 1, 10],然後Tensorflow的廣播規則將做休息:

t2_reshaped = tf.reshape(t2, [-1, 1, 1, 10]) 
output = t1 * t2_reshaped 

許多Tensorflow運營商允許廣播;廣播規則與numpy廣播規則相同。見https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

希望有幫助!

+0

它的作品,但結果和乘法不是我想要的。但是,這確實使我走向正確的方向。 – Shivam