Невозможно сложить 1D тензоры керас в тензор 2D керас - PullRequest
0 голосов
/ 22 февраля 2019

В моем пользовательском слое 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 каждый.Операция, которая должна быть выполнена, состоит в том, чтобы взять 1 тензор из Ash1_unpacked за один раз и получить внутренний продукт со всеми четырьмя тензорными элементами Kernel1_unpacked, таким образом давая (1,4) тензор для каждого входного тензора.Я не могу объединить тензоры.пожалуйста, помогите.

код точки_продукта-

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
...