Как заставить Keras-GAN работать с нестандартной формой ввода? - PullRequest
0 голосов
/ 24 марта 2019

Я использовал этот Keras-GAN репозиторий, в частности его pix2pix пакет для преобразования изображения в изображение.Он отлично работает, когда входная форма является стандартной (256,256), а также работает с данными (28,28) MNIST.Однако, когда я пытаюсь использовать входные данные формы (196 208), я получаю следующий ValueError:

Для слоя 'Concatenate' требуются входные данные с соответствующими формами, за исключением оси concat.Получил входные формы: [(None, 8, 8, 512), (None, 7, 7, 512)]

Для некоторого контекста функция Concatenate вызывается в следующем блоке кода:

# Image input
d0 = Input(shape=self.img_shape)

# Downsampling
d1 = conv2d(d0, self.gf, bn=False)
d2 = conv2d(d1, self.gf*2)
d3 = conv2d(d2, self.gf*4)
d4 = conv2d(d3, self.gf*8)
d5 = conv2d(d4, self.gf*8)
d6 = conv2d(d5, self.gf*8)
d7 = conv2d(d6, self.gf*8)

# Upsampling
u1 = deconv2d(d7, d6, self.gf*8)
u2 = deconv2d(u1, d5, self.gf*8)
u3 = deconv2d(u2, d4, self.gf*8)
u4 = deconv2d(u3, d3, self.gf*4)
u5 = deconv2d(u4, d2, self.gf*2)
u6 = deconv2d(u5, d1, self.gf)

где conv2d и deconv2d следующие:

def conv2d(layer_input, filters, f_size=4, bn=True):
 """Layers used during downsampling"""
 d = Conv2D(filters, kernel_size=f_size, strides=2, padding='same')(layer_input)
    d = LeakyReLU(alpha=0.2)(d)
 if bn:
        d = BatchNormalization(momentum=0.8)(d)
 return d

def deconv2d(layer_input, skip_input, filters, f_size=4, dropout_rate=0):
 """Layers used during upsampling"""
 u = UpSampling2D(size=2)(layer_input)
    u = Conv2D(filters, kernel_size=f_size, strides=1, padding='same', activation='relu')(u)
 if dropout_rate:
        u = Dropout(dropout_rate)(u)
    u = BatchNormalization(momentum=0.8)(u)
    u = Concatenate()([u, skip_input])
 return u
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...