Neural network Keras功能API中的高级激活层

Neural network Keras功能API中的高级激活层,neural-network,keras,activation-function,Neural Network,Keras,Activation Function,使用Keras设置神经网络时,您可以使用顺序模型或函数API。我的理解是,前者易于设置和管理,并作为层的线性堆栈运行,功能方法对于更复杂的体系结构非常有用,特别是那些涉及共享内部层输出的体系结构。我个人喜欢使用函数API实现多功能性,但是,我在使用LeakyReLU等高级激活层时遇到了困难。使用标准激活时,在顺序模型中可以写入: model = Sequential() model.add(Dense(32, activation='relu', input_dim=100)) model.ad

使用Keras设置神经网络时,您可以使用
顺序
模型或
函数API
。我的理解是,前者易于设置和管理,并作为层的线性堆栈运行,功能方法对于更复杂的体系结构非常有用,特别是那些涉及共享内部层输出的体系结构。我个人喜欢使用函数API实现多功能性,但是,我在使用LeakyReLU等高级激活层时遇到了困难。使用标准激活时,在顺序模型中可以写入:

model = Sequential()
model.add(Dense(32, activation='relu', input_dim=100))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
类似地,在函数API中,可以将上述内容写成:

inpt = Input(shape = (100,))
dense_1 = Dense(32, activation ='relu')(inpt)
out = Dense(10, activation ='softmax')(dense_2)
model = Model(inpt,out)
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
然而,当使用LeakyReLU和PReLU等高级激活时,在顺序模型中,我们将它们作为单独的层写入。例如:

model = Sequential()
model.add(Dense(32, input_dim=100))
model.add(LeakyReLU(alpha=0.1))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
现在,我假设一个人在函数API方法中做了相同的事情:

inpt = Input(shape = (100,))
dense_1 = Dense(32)(inpt)
LR = LeakyReLU(alpha=0.1)(dense_1)
out = Dense(10, activation ='softmax')(LR)
model = Model(inpt,out)
model.compile(optimizer='rmsprop',
          loss='categorical_crossentropy',
          metrics=['accuracy'])
我的问题是:

  • 函数式方法中的语法正确吗
  • 为什么Keras需要一个新的层来实现这些高级激活功能,而不是只允许我们替换
    “relu”
  • 为激活功能创建一个新的层,而不是将其分配给现有的层定义(如我们编写的第一个示例中的“relu”),有什么根本不同的地方吗?因为我意识到,您总是可以将激活功能(包括标准功能)编写为新的层,虽然你读过,那应该避免吗
  • 不,您忘记将LeakyReLU连接到致密层:

    LR=LeakyReLU(α=0.1)(密集型_1)

  • 通常,高级激活具有可调或可学习的参数,并且这些参数必须存储在某个位置,因此将它们作为层更为合理,因为您可以访问和保存这些参数

  • 只有在有优势的情况下(例如可调参数)才执行此操作

  • 谢谢,我编辑了我的问题,将它们链接起来。这只是一个错误,但很高兴其余的都没问题。是的,好的,那么你可以了解LeakyReLU的alpha值,假设,给定LeakyReLU层的一些激活函数?