我一直试图通过将神经网络的输出层的值裁剪到[-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]范围内的值?谢谢。
答案 0 :(得分:0)
根据您的问题,应考虑将网络输出的裁剪留给最后一层的激活功能:使用tanh激活可确保y = {-1 ... 1}。