自己定义了一个卷积类,现在需要把卷积加入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:不报错

属性没有=时,顺序重要,有等于(即有初始化时),顺序无所谓,但必须在传入参数时带上相应的属性名

总结一下就是:有需要传入参数的属性的类,必须传入参数才能实例化。没有需要传入参数的属性的类,直接()就能实例化。