Tensorflow 是否可以先初始化神经网络中的层,然后添加激活?

Tensorflow 是否可以先初始化神经网络中的层,然后添加激活?,tensorflow,tensorflow2.0,keras-layer,tf.keras,tensorflow2.x,Tensorflow,Tensorflow2.0,Keras Layer,Tf.keras,Tensorflow2.x,例如,我有一个三层的序列模型 model_loc = tf.keras.Sequential() 下面的代码片段是我向模型添加层并应用激活的常用方法 model.add(Dense(10, input_dim=3, activation=tf.nn.tanh)) model.add(Dense(10, activation=tf.nn.tanh)) model.add(Dense(4)) 是否可以在添加每层后应用激活功能?如下所示: model.add(Dense(10, input_dim

例如,我有一个三层的序列模型

model_loc = tf.keras.Sequential()
下面的代码片段是我向模型添加层并应用激活的常用方法

model.add(Dense(10, input_dim=3, activation=tf.nn.tanh))
model.add(Dense(10, activation=tf.nn.tanh))
model.add(Dense(4))
是否可以在添加每层后应用激活功能?如下所示:

model.add(Dense(10, input_dim=3))
model.add(activation=tf.nn.tanh))

model.add(Dense(10))
model.add(activation=tf.nn.sigmoid))

model.add(Dense(4))

任何帮助都将不胜感激

这正是keras提供激活层的原因:

编辑

如果要使用自定义激活,可以使用三种不同方法之一

假设您正在重新定义乙状结肠:

def my_sigmoid(x):
    return 1 / (1 + tf.math.exp(-x))
使用激活层:

使用Lambda层:

定义自定义图层:

方法3特别适用于参数激活,如PReLU

方法2是一个快速修复测试的方法,但就我个人而言,我喜欢避免它


方法1是实现简单功能的方法。

谢谢您的回答,但是如果我想使用自定义激活怎么办?我可以这样定义它吗model.addDense10,输入尺寸=3 model.addActivationcustom\u激活。我得到了一个解决方案,但我不确定它是使用我的“自定义激活”功能还是从Keras中的激活层调用默认激活?
def my_sigmoid(x):
    return 1 / (1 + tf.math.exp(-x))
model.add(Activation(my_sigmoid))
model.add(Lambda(lambda x: 1 / (1 + tf.math.exp(-x))))
class MySigmoid(Layer):

    def __init__(*args, **kwargs):
        super().__init__(*args, **kwargs)

    def call(inputs, **kwargs):
        return 1 / (1+tf.math.exp(-inputs))

model.add(MySigmoid)