Как написать слой, который может вывести один тензор в форму, как другой тензор в керасе - PullRequest
0 голосов
/ 29 марта 2019

В керасе я хочу написать слой, который мог бы вывести тензор до той же формы, что и другой тензор.Но я запутался с ошибкой типа.Я действительно нуждаюсь в помощи.Тензор - это изображения.Shape = [batchsize, height, width, channel] = [None, None, None, 3].

Я пытаюсь написать слой, используя:

x = MyLayer () ([x, y])

class MyLayer(Layer):

    def __init__(self, **kwargs):
        self.size = (0,0)
        super(MyLayer, self).__init__(**kwargs)

    def build(self, input_shape):
        assert isinstance(input_shape, list)
        shape_a, shape_b = input_shape
        self.size = (shape_b[1],shape_b[2])
        super(MyLayer, self).build(input_shape)  # Be sure to call this at the end

    def call(self, x):
        assert isinstance(x, list)
        a, b= x
        return K.tf.image.resize_bilinear(images= a , size=self.size)

    def compute_output_shape(self, input_shape):
        assert isinstance(input_shape, list)
        shape_a, shape_b = input_shape
        return [shape_b]

Я пытаюсь использовать K.tf.image.resize_bilinear (), чтобы сделать это. Но тип размера должен быть int.Но моя форма ввода - Нет.Потому что я хочу ввести изображения любого размера в мою модель.

TypeError: Ожидается, что int32 передано параметру 'size' из op 'ResizeBilinear', вместо него получено (None, None) типа 'tuple'.

Что мне делать?

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