Keras功能API和激活

Keras功能API和激活,keras,Keras,我在尝试使用Keras函数API的激活时遇到问题。我最初的目标是在relu和leaky relu之间进行选择,因此我提出了以下代码: def activation(x, activation_type): if activation_type == 'leaky_relu': return activations.relu(x, alpha=0.3) else: return activations.get(activation_type)(x)

我在尝试使用Keras函数API的激活时遇到问题。我最初的目标是在relu和leaky relu之间进行选择,因此我提出了以下代码:

def activation(x, activation_type):
    if activation_type == 'leaky_relu':
        return activations.relu(x, alpha=0.3)
    else:
        return activations.get(activation_type)(x)


# building the model

inputs = keras.Input(input_shape, dtype='float32')
x = Conv2D(filters, (3, 3), padding='same')(inputs)
x = activation(x, 'relu')
但类似这样的东西会产生错误:
AttributeError:'Tensor'对象没有属性'\u keras\u history'
。我发现这可能表明我在模型中的输入和输出没有连接

keras.advanced\u activations
是在functional API中实现类似功能的唯一方法吗

编辑:以下是激活功能的有效版本:

    def activation(self, x):
        if self.activation_type == 'leaky_relu':
            act = lambda x: activations.relu(x, alpha=0.3)
        else:
            act = activations.get(self.activation_type)
        return layers.Activation(act)(x)

您希望通过激活层向模型添加激活。当前,您正在添加的对象不是Keras
,这将导致您的错误。(在Keras中,图层名称始终以大写字母开头)。尝试类似的方法(最简单的示例):


您希望通过激活层向模型添加激活。当前,您正在添加的对象不是Keras
,这将导致您的错误。(在Keras中,图层名称始终以大写字母开头)。尝试类似的方法(最简单的示例):


谢谢你的建议!这很有帮助,但并不是所需要的全部。我在这篇文章中找到了答案缺失的部分很好,谢谢,我已经编辑了我的答案供将来参考。谢谢你的建议!这很有帮助,但并不是所需要的全部。我在这篇文章中找到了答案缺失的部分很好,谢谢,我已经编辑了我的答案以供将来参考。
from keras.layers import Input, Dense, Activation
from keras import activations

def activation(x, activation_type):
    if activation_type == 'leaky_relu':
        return activations.relu(x, alpha=0.3)
    else:
        return activations.get(activation_type)(x)


# building the model
inputs = Input((5,), dtype='float32')
x = Dense(128)(inputs)
# Wrap inside an Activation layer
x = Activation(lambda x: activation(x, 'sigmoid'))(x)