Keras CuDNNLSTM隐式激活函数?

时间:2019-04-04 11:08:34

标签: python tensorflow keras

tf.keras.layers.LSTM中有一个activation参数(默认为tanh
CuDNNLSTM没有任何参数,而有{{1} }参数。
我想念什么吗?

CuDNNLSTM不是tf.keras.layers.LSTM包装器,而是独立的实体,那么如何为它设置激活功能?

2 个答案:

答案 0 :(得分:0)

CuDNNLSTM具有硬编码的tanh激活。据我所知,这是无法更改的。如果需要其他激活,则可以使用常规LSTM层。

或者,如果您只需要为模型激活特定的输出,例如softmax,您可以粘贴在密集层上,然后再进行激活。这是我针对特定情况的操作方式的摘要:

x = CuDNNLSTM(256, return_sequences=True)(x)
x = TimeDistributed(Dense(8))(x)
x = Softmax(axis=2)(x)

进一步阅读:

答案 1 :(得分:-1)

您可以反转tanh激活,然后应用您想要的任何激活!

例如:

x = LSTM(200,kernel_initializer=VarianceScaling(2))(x)

o = 1-1e-12 #float a little bit smaller than 1 in case LSTM returns -1 or 1
#x = Lambda(lambda x: 0.5*tf.math.log((1+x*o)/(1-x*o)))(x) #Tanh-¹
x = Lambda(lambda x: tf.math.atanh(x*o))(x)

x = LeakyReLU(alpha=0.01)(x) #apply new activation