首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当制作具有非固定输入数据大小的keras模型时,是否可以使用lambda层根据大小应用不同的层?

当制作具有非固定输入数据大小的keras模型时,是否可以使用lambda层根据大小应用不同的层?
EN

Stack Overflow用户
提问于 2019-01-24 12:56:50
回答 1查看 67关注 0票数 0

我正在处理卷积图像模型,我将该模型转换并存储为yaml文件,然后在代码中使用它。输入图像的完整大小为256 * 256,但在训练过程中,我使用大小为128 * 128的补丁来训练模型,并在验证过程中获得完整大小的图像。因此,模型的输入大小设置为None。我想创建一个模型,只裁剪图像的中间部分,大小为64 * 64从这个输入层。此时,模型必须根据输入图像的大小裁剪不同长度的图像,以产生相同的输出大小(64*64)。但是,是否可以在我的代码中应用if-else语句?如果你能帮我写代码,我将不胜感激。

代码语言:javascript
复制
patch = (None,None, 6)
x_input = Input(shape=patch)

def get_crop(x):
    from keras.layers import Cropping2D
    if x.get_shape().as_list()[1:3] ==[256,256]:
        return Cropping2D(cropping=(96,96))(x)
    else:
        return Cropping2D(cropping=(32,32))(x)

x_crop = Lambda(get_crop)(x_input)
EN

回答 1

Stack Overflow用户

发布于 2019-01-24 14:24:34

你最好问另一个像CrossValidation这样的StackExchange,但这里有一个简短的答案。

在处理不同大小的图像时,有两种解决方案。首先是将大图像裁剪成多个子图像,并对每个子图像的类进行投票。第二种解决方案要好得多,那就是拥有一个完全卷积网络。您可以使用大卷积替换完全连接的块,并对分类层(GlobalAveragePooling或MaxPooling)使用全局池。

请注意,只有当您获得的图像更大时,这些解决方案才有效。如果有较小的图像,解决方案是缩放或填充图像。但最好是放大。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54339603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档