子类化keras.Model时call方法无法访问实例字段值的问题
错误原因与解决方法
错误原因
你把Python类的构造函数名称写错了——把__init__误写成了__int__(少了一个字母i)。这个错误导致初始化逻辑完全没被执行,self.my_info = "foo"根本没运行,所以实例化后的MyClass对象不存在my_info属性,调用call方法时就会触发AttributeError。
正确实现
把构造函数名称修正为__init__即可,修改后的完整代码如下:
class MyClass(keras.Model): def __init__( self, input_shape: tuple, classes_count: int = 10, model_name: str = 'model_name', **kwargs, ): super(MyClass, self).__init__(name=self.__class__.__name__, **kwargs) self.my_info = "foo" def call(self, inputs): x = self.my_info return x var = MyClass((2, 2)) print(var.call("asd"))
运行这段代码就能正常输出foo,因为__init__方法会在实例化时执行,self.my_info被正确初始化,call方法就能正常访问这个属性了。
内容的提问来源于stack exchange,提问作者mCs
相关产品推荐
相关产品推荐

