自己定义了一个卷积类,现在需要把卷积加入model中,我的操作是这样的:
model.add(Convolution1dLayer)
这样就会报错:
正确的写法是:
model.add(Convolution1dLayer())
原因是Convolution1dLayer仅仅是一个类,但model需要添加的层必须是实例(对象),必须把类实例化后才能添加。
实际上,'Convolution1dLayer()'也并没有实例化,因为在我自己定义的Convolution1dLayer这个类中定义了许多需传入参数的属性,但这里并没有参数传入,实际上也没有实例化。
比如像以下这种的可以不传入参数,直接加一个括号就能实例化:
keras.layers.convolutional.MaxPooling1D(pool_length=2, stride=None, border_mode='valid')
因为在定义时,所有属性都已经初始化参数了,可以不用再传入参数,传入参数就更改了初始值。
注意:None也是对属性的初始化
b:报错
b=None:不报错
属性没有=时,顺序重要,有等于(即有初始化时),顺序无所谓,但必须在传入参数时带上相应的属性名
总结一下就是:有需要传入参数的属性的类,必须传入参数才能实例化。没有需要传入参数的属性的类,直接()就能实例化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:keras写模型时遇到的典型问题,也是最基础的类与对象问题 - Python技术站