2017-05-05 39 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