Keras合并来自同一批次的连续图像

时间:2018-10-06 21:50:13

标签: tensorflow machine-learning keras deep-learning lasagne

我正在尝试从用宽面条写的blog post中复制Keras中的模型。该数据集由视网膜图像组成(每位患者2张图像,因为每位患者都有2只眼睛),该图像将分为5类。

到目前为止,我将每个图像分别提供给我的模型,但在某个时候,我想合并属于同一患者的图像,这正是博客文章所做的。博客文章本身可能会更好地解释这一点:

  

我尝试做的一件事是为两只眼睛的每一个(或什至是输入层)合并第一个卷积或合并层的输出。然后从理论上讲,卷积层可以检测到左右眼中的相似模式。

问题是我完全不知道如何在Keras中实现这一目标。

到目前为止,我一直在尝试(尝试复制此Lasagne code):

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

  ...])

如您所见,我正在尝试通过将batch_size除以2来合并Reshape层中每个患者的眼睛。我相信这是Lasagne的原始代码对此code (link to line 295)所做的工作:

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

我不确定在Keras中这样做是否有意义,因为在reshape doc中,似乎我们不应该输入批量大小。

我对Keras并不陌生,我对合并具有相同批次大小的两个图像的想法非常困惑,因此将批次大小减少了一半。

有人可以解释一下如何实现吗?

0 个答案:

没有答案