无法堆叠keras 1D张量以形成2D keras张量

时间:2019-02-22 03:12:38

标签: python tensorflow keras keras-layer tensor

在我的keras自定义层中,我试图获取两个相同大小的矩阵的内积并将它们存储在一维数组中。然后必须将1D张量堆叠为2D张量。代码段是

def call(self, x):
     print(x.shape)

     mat1_shape =K.int_shape(self.kernel1)      
     print(mat1_shape)

     Ash1_unpacked = tf.unstack(x,axis=0)   # defaults to axis 0, 
                                            #returns a list of tensors
     kernel1_unpacked = tf.unstack(self.kernel1,axis=2)     

     for t in Ash1_unpacked:
         B3= dot_product(t,kernel1_unpacked)
         print(B3)

     B4=tf.concat(B3,axis=1)
     print(B4)
     return B4

在这里,Ash1_unpacked是10张张量为20 x 20的张量的列表。 Kernel1_unpacked是4个张量的列表,每个张量为20 x20。要执行的操作是一次从Ash1_unpacked中获取1个张量,并获得具有Kernel1_unpacked的所有四个张量的内积,从而为每个输入张量提供(1,4)张量。 我无法连接张量。请帮忙。

dot_product代码为-

def dot_product(t,kernel1_unpacked):

processed_sample = []# this will be the list of processe
for r in kernel1_unpacked:
    result_tensor = K.sum(r * t , keepdims=True)
    processed_sample.append(result_tensor)
probs = tf.concat(processed_sample,axis=0)
return probs

0 个答案:

没有答案