Keras自定义网络Model报错解决 ----This model has not yet been built

1、keras定义模型结构

keras是tensorflow的高级封装的深度学习库,操作简洁、方便,非常容易上手。在keras深度模型的搭建过程中,最基础最底层的就是各种 Layers 的搭建,其中,keras提供了两个接口供使用 Model, Sequential,前者相对灵活,大多数使用场景都能胜用;后者序列搭建模型,类似于一层一层的搭积木的形式,可以快速构建相对简单的模型。
在平时使用中,我们也可以继承Model类,自定义自己的网络结构,好像大家都这么干的,最近在研究语义分割相关的事宜,看到一篇论文,就像将其大概复现,论文题目好像为:Attention U-Net: Learning Where to Look for the Pancreas ,加入了attention机制的Unet,不知道具体效果如何。
下图来自其文章,可以具体看看。
图片从原论文截图而来,感兴趣,可以自己搜搜看

其中,attention模块的具体操作流程如下图所示,感兴趣也可以搜搜看。
Attention Block

2、自定义网络结构

1、首先按照论文写的结构,自定义网络结构,然后通过summary()观察模型的结构。主要集成init与call方法,然后就可以完成模型的搭建,init里面进行一些需要用到层的声明以及一些变量,然后再 call 方法里面进行搭建模型。

2、但是,在此处,一直犯了一个错误,导致无法输出其具体的模型结构:报错内容为:ValueError: This model has not yet been built. Build the model first by calling build() or calling fit() with some data, or specify an input_shape argument in the first layer(s) for automatic build.

3、看到此问题一脸懵逼,平时直接用的 Model 与 Sequential 重来没发生这种情况,原来这种方法里人家已经帮咱们自动build了,这样模型才知道具体的输入数据的形式。

4、解决方法:百度啊,直接添加一个build就行,输入咱们模型的尺寸即可。
atten.build(input_shape=(None,224,224,3))

3、感悟

路漫漫其修远兮,吾将上下而求索!!!
模型搭建过程中,各中shape的计算,很容易出现shape不符合的情况,组好先将模型设计出来,然后动手搭建,做到 心有模型,细嗅蔷薇

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值