zoukankan      html  css  js  c++  java
  • keras写模型时遇到的典型问题,也是最基础的类与对象问题

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

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

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

  • 相关阅读:
    Promise
    replace
    mongogogog
    sh back mongo
    mongodb 备份 还原 导出 导入
    mongo virtual
    openssl
    isMobile
    google api autocomplete
    npm
  • 原文地址:https://www.cnblogs.com/ymjyqsx/p/6492601.html
Copyright © 2011-2022 走看看