Keras-无法通过裁剪限制输出

时间:2019-09-23 04:47:39

标签: python tensorflow keras

我一直试图通过将神经网络的输出层的值裁剪到[-1,1]范围来限制最后一层的输出。但是,裁剪并没有帮助约束值。有没有更有效的方法来约束输出?

def encoder(self, x_next, x, y, keep_prob):
    x_con = concatenate([x_next, x, y])
    enc1 = Dense(self.encoder_size[0], activation='relu')(x_con)
    drop = Dropout(keep_prob)(enc1)
    enc2 = Dense(self.encoder_size[1], activation='relu')(drop)
    drop = Dropout(keep_prob)(enc2)
    enc3 = Dense(self.encoder_size[2], activation='relu')(drop)
    mu = Dense(self.latent_dim, activation='linear', name='encoder_mean')(enc3)
    mu_clipped = Lambda(self.clip_val)(mu)
    log_var = Dense(self.latent_dim, activation='linear', name='encoder_log_var', kernel_initializer='zeros')(enc3)
    return mu_clipped, log_var

def clip_val(self, args):
    mu = args
    mu_clip = K.clip(mu, min_value=-1.0, max_value=1.0)
    return mu_clip

我得到的输出值的范围是[-7.1,7.2]。如何约束输出层以产生[-1,1]范围内的值?谢谢。

1 个答案:

答案 0 :(得分:0)

根据您的问题,应考虑将网络输出的裁剪留给最后一层的激活功能:使用tanh激活可确保y = {-1 ... 1}。