在tf.keras.layers.LSTM中有一个activation
参数(默认为tanh
)
CuDNNLSTM没有任何参数,而有{{1} }参数。
我想念什么吗?
CuDNNLSTM不是tf.keras.layers.LSTM包装器,而是独立的实体,那么如何为它设置激活功能?
答案 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