首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TF: Model SubClassing has:'NoneType‘对象没有属性’编译‘

TF: Model SubClassing has:'NoneType‘对象没有属性’编译‘
EN

Stack Overflow用户
提问于 2020-06-04 15:19:14
回答 1查看 1.5K关注 0票数 0

我试图在tf.keras中用以下方式实现模型定义的子类,并面对随后的属性错误。

代码语言:javascript
复制
def my_model(Model):
    def __init__(self, dim):
        super(my_model, self).__init__(**kwargs)
        self.efnet  = efn.EfficientNetB0(input_shape=(dim, 3), include_top = False, weights = 'imagenet')
        self.gap    = L.GlobalAveragePooling2D()
        self.bn     = L.BatchNormalization()
        self.denseA = L.Dense(784, activation='relu', name = 'dense_A')
        self.out    = L.Dense(1, activation='sigmoid')
    
    def call(self, inputs):
        x     = self.efnet(inputs)
        x_gap = self.gap(x)
        bn    = self.bn(x_gap)
        den_A = self.denseA(bn)
        drop  = self.drop(den_A)
        return self.out(drop)

dim = (124,124)
model = my_model((dim)

错误

代码语言:javascript
复制
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-3-e8086e70a144> in <module>()
     27 dim = (124,124)
     28 model = my_model(dim)
---> 29 model.compile(
     30     optimizer='adam',
     31     loss = 'binary_crossentropy',

AttributeError: 'NoneType' object has no attribute 'compile'

环境

代码语言:javascript
复制
OS: Windows OS
TF Ver. tf 2.1

Reproducibility这里是colab中的可复制代码。

提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-09 11:05:18

它应该是,而不是函数

而不是def my_model(Model):,它应该是class my_model(Model):。此外,我们还需要进一步build模型。以下是完整的代码:

代码语言:javascript
复制
class my_model(Model):
    def __init__(self, dim):
        super(my_model, self).__init__(**kwargs)
        self.efnet  = efn.EfficientNetB0(input_shape=(dim, 3), include_top = False, weights = 'imagenet')
        self.gap    = L.GlobalAveragePooling2D()
        self.bn     = L.BatchNormalization()
        self.denseA = L.Dense(784, activation='relu', name = 'dense_A')
        self.out    = L.Dense(1, activation='sigmoid')
    
    def call(self, inputs):
        x     = self.efnet(inputs)
        x_gap = self.gap(x)
        bn    = self.bn(x_gap)
        den_A = self.denseA(bn)
        drop  = self.drop(den_A)
        return self.out(drop)

dim = (124,124)
model = my_model((dim)
model.build((None, *dim))
model.compile(...)
model.summary()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62198201

复制
相关文章

相似问题

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