python 深度学习(5)-- 随机失活 & 过采样

(1)随机失活

随机失活 指的是在每轮训练时忽略一定随机数量的神经元,dropout 可能会提高 DNN 性能。随机省略一部分隐藏的神经元的过程称之为 随机失活 。如图

阐释一下这种方法:对于每次训练的实例,每个隐藏层的神经元以 p 的概率从网络中随机被忽略。由于神经元是随机选择的,因此每个训练实例选择的都是不同的神经元组合。

随机失活并不能保证提高性能,但通常值得一试。牢记以下三点:

(1)通过在 DNN 中创建多条通往正确分类的路径,随机失活能降低噪声样本中共适性的可能性。
(2)随机失活的比例越大,训练中引入的噪声就越多,这会降低学习速度。

(3)随机失活在非常大的 DNN 模型上的效果最佳

重建模型如下:

''' 其他的参数不再解释 '''
fit2 = Classifier(
            ''' 采用 双曲正切 激活函数 '''
            layers = [Layer("Tanh",units = 45),Layer("Tanh",units = 18),Layer("Tanh",units = 18),
                            Layer("Softmax")],
            learning_rate = 0.80,
            random_state = 2018,
            valid_size = 0.25,
            dropout_rate = 0.20 , ''' 随机失活率 '''
            learning_momentum = 0.30,
            batch_size = 35, ''' batch_size 设置 '''
            n_iter = 100)

(2)过采样

在实际数据中,往往面对样本不平衡的问题,比如在金融交易数据集中,绝大多数的交易是“正常”的,只有一小部分是“可疑”交易。这种严重的类别失衡样本可能导致深度学习模型表现不佳。重新采样数据可疑解决这个问题。在该方法中,对权重过低的类别进行 过采样,以此改变训练集中的相对类别频率。

# 取 x_train 中第 0 列的值
w_train = x_train[:,0]

''' 指定每个样本的采样率,对于较小类别进行过采样,权重为 1.10 '''
''' 注意 x_train 是numpy 二维数组 , y_train 必须是 numpy 的一维数组而不能是 list '''
w_train[y_train == 0] = 1
w_train[y_train == 1] = 1.10
# 此处省略
fit3 = Classifier( ... )

# 在训练时根据指定采样权重采样
fit3.fit(x_train, y_train, w_train)

如下代码示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值