Как я могу присвоить значение тензору, чтобы предотвратить эту ошибку: TypeError: объект «RefVariable» не поддерживает назначение элемента? - PullRequest
1 голос
/ 26 апреля 2019

У меня есть функция, которая имеет один-два входа, и оба они являются тензорными.Мне нужно сделать некоторые процессы на этих входах, а затем использовать вывод в моей сети.один из этих входов является выходом слоя свертки, и я не знаю, как мне решить эту ошибку!Я поставил функцию ниже: приведенный ниже код реализует это уравнение, G, C(u) и C(v) являются числами. введите описание изображения здесь

def DCT(a, b):
    for u in range(8):
        for v in range(8):
            for x in range(8):
                for y  in range(8):
                    b[u,v] = b[u, v] + 0.25 * C(u) * C(v) * a[x, y]* np.cos((2 * x+1) * (u) * np.pi / 16) * np.cos((2 * y+1) * (v) * np.pi / 16)

в вышеприведенном коде, a и b являются тензорами, которые производятся в следующем коде:

def slicAndJpeg(img):
    for i in range (int(img.shape[1].value/8)):
        for j in range(int(img.shape[2].value/8)):
            temp=(img[:,i*8:i*8+8,j*8:j*8+8])
            tempb=K.zeros((8,8))
            DCT(temp,tempb)
            mask=quntize_mask(8,9)
            qunz=Kr.layers.multiply(mask,tempb)
            tempc=K.zeros((8,8))
            IDCT(qunz,tempc)
            img[:,i*8:i*8+8,j*8:j*8+8]=tempc

полученная ошибка:

Трассировка (последний последний вызов):

Файл "", строка 122, в decoded_noise = JPEGLayer () (декодированный) # 16

Файл "D: \ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ keras \ engine \ base_layer.py", строка 457, в вызов output = self.call (входные данные, ** kwargs)

Файл "", строка 94, в шуме возврата вызова ()

Файл "", строка 88, в шуме slicAndJpeg (noised_image_pad)

Файл "", строка 66, в SlicAndJpeg DCT (temp, tempb)

Файл "", строка 40, в DCT b [u, v] = b [u, v] + 0,25 * C (u) * C (v) * a [x, y] * np.cos ((2 * x + 1) * (u) * np.pi / 16) * np.cos ((2 * y + 1) * (v) * np.pi / 16)

TypeError: объект 'RefVariable' не поддерживает назначение элементов

, но мне нужно выполнить эти назначения, и я не могу их изменить.есть ли у вас предложения?Я также пытался использовать K.eval для этих двух входов, но он выдает еще одну ошибку, которая, я думаю, связана с использованием K.eval перед model.fit

InvalidArgumentError: Вы должны указать значение длятензор-заполнитель 'input_1' с dtype float и shape [?, 28,28,1]

Не могли бы вы сказать, как я могу выполнить эти назначения без ошибок?Я новичок в Керасе и пока не знаю многих вещей, так что, возможно, мои вопросы легки для вас, но, к сожалению, смутили меня.Спасибо.

...