从时间分布层单独激活

时间:2018-05-17 10:52:20

标签: keras keras-layer

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

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

我想删除后者的激活“softmax”以访问其logit,即:

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)? 此致

1 个答案:

答案 0 :(得分:0)

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