将激活与时间分布层分开

Separate activation from a timedistributed layer

我实现了一个具有多个连续 TimeDistributed 层的模型。我的最后一层定义如下:

y_pred = TimeDistributed(Dense(output_dim, name="y_pred", kernel_initializer=init, bias_initializer=init, activation="softmax"), name="out")(x)

我想删除后者的激活 "softmax" 以访问其登录信息,即:

logit = TimeDistributed(Dense(output_dim, name="fc6", kernel_initializer=init, bias_initializer=init), name="logit")(x)

如果我想找回最初的y_pred,我写道:

(1) y_pred = TimeDistributed(Activation('softmax'), name="pred")(logit)

我很困惑,因为下面这行似乎也有效:

(2) y_pred = Activation('softmax', name="pred")(logit)

哪一个是正确的? (1) 或 (2) ? 此致

它实际上遵循与默认情况下相同的语义 Activation('softmax') 将激活应用于最后一个 axis=-1。就是default argument。因此,即使您使用 TimeDistributed,您也是将其应用于最后一个维度,但没有分布的后者会更快,因为它涉及的操作更少。