Keras объединяет последовательные изображения из одной партии - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь скопировать модель в Керасе из сообщения в блоге , написанного на Лазанье.Набор данных состоит из изображений сетчатки (2 изображения на пациента, поскольку у каждого пациента есть 2 глаза), которые должны быть классифицированы по 5 классам.

Пока что я подаю каждое изображение индивидуально для моей модели, но в какой-то моментЯ хочу объединить изображения, принадлежащие одному пациенту, и это именно то, что делает запись в блоге.Это могло бы быть лучше объяснено самой записью в блоге:

Одна вещь, которую я попытался, состояла в том, чтобы объединить выходные данные первого сверточного или пулирующего слоя для каждого из двух глаз (или, возможно, даже входного слоя),Тогда теоретически сверточный слой мог бы обнаруживать сходные паттерны для левого и правого глаза.

Проблема в том, что я абсолютно не представляю, как этого добиться в Керасе.

Что ядо сих пор пытался (пытается повторить этот код лазаньи ):

model = Sequential([
  Conv2D(filters=32, kernel_size=(7, 7), strides=(2,2),  
       kernel_initializer=Orthogonal(1.0), bias_initializer=Constant(0.1),
       data_format='channels_last',
       input_shape=(512, 512, 3)),  # Input layer
  LeakyReLU(leakiness),
  MaxPool2D(pool_size=(3,3), strides=(2,2)),

  ...
  ...  # A number of repetitions of Conv2D, LeakyRelU, MaxPool2d
  ...

  # Interesting part:
  # (at this point, I expect the input to have a batch_size of 64 and 256 channels)
  Reshape(target_shape=(32, -1)),  # Batch_size // 2 = 32,  merge eyes

  ...])

Как вы можете видеть, я пытаюсь объединить глаза каждого пациента в слое Reshape путем разделения batch_sizeв 2 раза. Я полагаю, что это то, что делает оригинальный код в Lasagne с этим кодом (ссылка на строку 295) :

# Combine representations of both eyes.
layers.append(
    nn.layers.ReshapeLayer(layers[-1], shape=(batch_size // 2, -1)))

Я не уверен, что он вообщеимеет смысл делать это в Keras, поскольку в reshape doc кажется, что мы не должны вводить размер пакета.

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

Может кто-нибудь объяснить, как этого добиться?

...