在我的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