我想用2个图像输入构建一个多路径CNN,每个输入都输入自己的CNN,然后在最后将特征连接起来。现在我有这样的东西:
第一组图像的特征和标签:X(具有特征)y(标签)
第二组图像的特征和标签(分段):X_2(具有特征)y_2(具有标签)
我的增强代码是这样的:
data_augmentation = tf.keras.Sequential()
data_augmentation.add(tf.keras.layers.RandomFlip("horizontal_and_vertical"))
data_augmentation.add(tf.keras.layers.RandomRotation(0.2))
data_augmentation.add(tf.keras.layers.RandomZoom(height_factor=(.05),
width_factor=(.05)))
我想让CNN看起来像这样:CNN model
第一和第二组图像都是相同的大小并且顺序相同。唯一的区别是第二组是分段的。我想对这两个应用相同的数据增强。有人知道怎么做吗?
我试着在网上寻找一些答案,但我发现大多数关于多输入CNNS的网站都没有使用增强层,所以我被卡住了。
1条答案
按热度按时间xkftehaa1#
(See以下为原始答案)
我猜这个Keras文档与Keras中的数据增强有关。特别是,它提到了使用数据增强层的两个选项:在
Model
中使用它,并在tf.data
管道中使用它。下面是一个使用第二个选项的粗略(可以将其视为伪代码)示例实现。
此外,我个人倾向于使用自定义的
Model
来实现问题中描述的Model
,以实现灵活性,但也许有一些方法可以使用更高级别的Keras API来实现。在下面的代码片段中,设置了一个自定义的
Model
,然后是训练数据集管道。它缺乏确切的加载步骤,但应该给予一个如何将数据集与自定义Model
连接的粗略概念。原始答案
由于两个数据集大小相同,因此可以使用
以创建数据集,其中每个条目是一对图像,比如
(x, x2)
。然后我们可以做一些事情,将
x
和x2
合并为一个更适合增强层的Tensor。假设对于每个
x
(假设3个通道)和每个x2
(假设1个通道),通道的数量是恒定的,则可以在之后切片扩增结果:顺便说一下,如果问题更详细一些就更好了。例如,提供一些代码或伪代码来解释数据在“多路径CNN”中应该如何流动以及正在尝试什么样的数据增强将是有帮助的。