что означает эта ошибка «Не удалось преобразовать объект типа <class 'tuple'> в Tensor»? - PullRequest
1 голос
/ 01 мая 2019

У меня есть сеть в Керасе, и я пытаюсь внести некоторые изменения в вывод слоя, а затем передать его в оставшуюся сеть. в apply function он принимает тензор с формой (размер партии 1,32,32), и все тензоры имеют формат channel_first. затем я сворачиваю его с тензором формы (8,8,1,64) и получаю (?, 64,4,4), но когда я хочу изменить форму на (8,8,4,4) это выдает следующую ошибку. почему происходит эта ошибка? потому что когда я пытаюсь проверить код с тензорами без сети, это работает! Я добавляю код здесь тоже. подскажите пожалуйста в чем проблема?

    def apply_conv(self, image, filter_type: str):

        if filter_type == 'dct':
            filters = self.dct_conv_weights
        elif filter_type == 'idct':
            filters = self.idct_conv_weights
        else:
            raise('Unknown filter_type value.')
        print(image.shape)

        image_conv_channels = []
        for channel in range(image.shape[1]):
            print(image.shape)
            print(channel)
            image_yuv_ch = K.expand_dims(image[:, channel, :, :],1)
            print( image_yuv_ch.shape)
            print(filters.shape)
            image_conv = Kr.backend.conv2d(image_yuv_ch,filters,strides=(8,8),data_format='channels_first')
            print(image_conv.shape)
            print('salam')
#            image_conv = Kr.backend.permute_dimensions(image_conv,(0, 2, 3, 1))
            image_conv = Kr.backend.reshape(image_conv,(image_conv.shape[0], 8,8,image_conv.shape[2], image_conv.shape[3]))
            print(image_conv.shape)
            image_conv =  Kr.backend.permute_dimensions(image_conv,(0, 1, 3, 2, 4))
            image_conv = Kr.backend.reshape(image_conv,(image_conv.shape[0],
                                                  image_conv.shape[1]*image_conv.shape[2],
                                                  image_conv.shape[3]*image_conv.shape[4]))

#            Kr.backend.expand_dims(image_conv,1)

            # image_conv = F.conv2d()
            image_conv_channels.append(image_conv)

        image_conv_stacked = Kr.backend.concatenate(image_conv_channels, axis=1)

        return image_conv_stacked

Traceback (последний последний вызов):

Файл "", строка 376, в decoded_noise = JpegCompression () (act11) # 16

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ keras \ двигатель \ base_layer.py", линия 457, вызов output = self.call (входные данные, ** кваргс)

Файл "", строка 162, в вызове image_dct = self.apply_conv (noised_image, 'dct')

Файл "", строка 126, в apply_conv image_conv = Kr.backend.reshape (image_conv, (image_conv.shape [0], 8,8, image_conv.shape [2], image_conv.shape [3]))

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ keras \ бэкэнд \ tensorflow_backend.py", линия 1969 года, в форме return tf.reshape (x, shape)

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ OPS \ gen_array_ops.py", строка 6482, в форме «Изменить форму», тензор = тензор, форма = форма, имя = имя)

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ op_def_library.py", строка 513, в _apply_op_helper повысить ошибку

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ op_def_library.py", строка 510 в _apply_op_helper preferred_dtype = default_dtype)

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ ops.py", строка 1146, в internal_convert_to_tensor ret = translation_func (значение, dtype = dtype, имя = имя, as_ref = as_ref)

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ constant_op.py", строка 229, в _constant_tensor_conversion_function возвращаемая константа (v, dtype = dtype, name = name)

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ constant_op.py", строка 208, в постоянном значение, dtype = dtype, shape = shape, verify_shape = verify_shape))

Файл "D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ tensor_util.py", строка 531, в make_tensor_proto "поддерживаемый тип." % (тип (значения), значения))

TypeError: Не удалось преобразовать объект типа в Tensor. Содержание: (Размер (Нет), 8, 8, Размер (4), Размер (4)). Рассмотрим приведение элементов к поддерживаемому типу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...