《Python 深度学习》4.4 防止过拟合的常用方法 (代码)

防止神经网络过拟合的常用方法包括:

1.减小网络容量;2.添加权重正则化;3.添加dropout;4.获取更多的训练数据。

Overfitting and underfitting

过拟合与欠拟合

为了防止模型从训练数据中学到错误或无关紧要的模式,最优解决方法是获取更多的训练数据。模型的训练数据越多,泛化能力自然也越好。如果无法获取更多数据,次优解决方法是调节模型允许存储的信息量,或对模型允许存储的信息加以约束。如果一个网络只能记住几个模式,那么优化过程会迫使模型集中学习最重要的模式,这样更可能得到良好的泛化。

这种降低过拟合的方法叫作正则化(regularization)。我们先介绍几种最常见的正则化方法: 然后将其应用于实践中,以改进上一节的电影分类模型。


from keras.datasets import imdb
import numpy as np
​
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
​
def vectorize_sequences(sequences, dimension=10000):
    # Create an all-zero matrix of shape (len(sequences), dimension)(创建一个形状为 (len(sequences), dimension) 的零矩阵)
    results = np.zeros((len(sequences), dimension))
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1.  # set specific indices of results[i] to 1.(将 results[i] 的指定索引设为 1)
    return results
​
# Our vectorized training data(将训练数据向量化)
x_train = vectorize_sequences(train_data)
# Our vectorized test data(将测试数据向量化)
x_test = vectorize_sequences(test_data)
# Our vectorized labels(将标签向量化)
y_train = np.asarray(train_labels).astype('float32')
y_test = np.asarray(test_labels).astype('float32')

克服过拟合

减小网络大小

防止过拟合的最简单的方法就是减小模型大小,即减少模型中可学习参数的个数(这由层数和每层的单元个数决定)。在深度学习中,模型中可学习参数的个数通常被称为模型的容量(capacity)。直观上来看,参数更多的模型拥有更大的记忆容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值