操作Keras中的权重束缚镌汰深度神经收集中的过拟合
副问题[/!--empirenews.page--]
权重束缚提供了一种要领,用于镌汰深度进修神经收集模子对实习数据的太过拟合,并改进模子对新数据(譬喻测试集)的机能。有多种范例的权重束缚,譬喻最大和单元向量类型,有些必要必需设置的超参数。 在本教程中,您将发明Keras API,用于向深度进修神经收集模子添加权重束缚以镌汰太过拟合。 完本钱教程后,您将相识: 怎样行使Keras API建设向量范数束缚。 怎样行使Keras API为MLP,CNN和RNN层添加权重束缚。 怎样通过向现有模子添加权重束缚来镌汰太过拟合。 教程概述 本教程分为三个部门,他们是: Keras的重量束缚 图层上的权重束缚 体重束缚案例研究 Keras的重量束缚 Keras API支持权重限定。束缚是按层指定的,可是在层中应用和逼迫执行每个节点。 行使束缚凡是涉及在图层上为输入权重配置kernel_constraint参数,并为毛病权重配置bias_constraint。 凡是,权重束缚不消于毛病权重。一组差异的向量类型可以用作束缚,作为keras.constraints模块中的类提供。他们是: 最大范数(max_norm),用于逼迫权重便是或低于给定限定。 非负类型(non_neg),逼迫权重具有正数。 单元范数(unit_norm),逼迫权重为1.0。 Min-Max范数(min_max_norm),用于逼迫权重在一个范畴之间。 譬喻,一个简朴的束缚可以这样被引入和实例化: # import norm from keras.constraints import max_norm # instantiate norm norm = max_norm(3.0) # import norm from keras.constraints import max_norm # instantiate norm norm = max_norm(3.0) 图层上的权重束缚 权重类型可用于Keras的大大都层。在本节中,我们将看一些常见的例子。 MLP加权束缚 以下示例在麋集完全毗连层上配置最大范数权重束缚。 # example of max norm on a dense layer from keras.layers import Dense from keras.constraints import max_norm ... model.add(Dense(32, kernel_constraint=max_norm(3), bias_constraint==max_norm(3))) ... # example of max norm on a dense layer from keras.layers import Dense from keras.constraints import max_norm ... model.add(Dense(32, kernel_constraint=max_norm(3), bias_constraint==max_norm(3))) ... CNN加权束缚 下面的示例在卷积层上配置最大范数权重束缚。 # example of max norm on a cnn layer from keras.layers import Conv2D from keras.constraints import max_norm ... model.add(Conv2D(32, (3,3), kernel_constraint=max_norm(3), bias_constraint==max_norm(3))) ... RNN权重束缚 与其他图层范例差异,递归神经收集应承您对输入权重和毛病以及轮回输入权重配置权重束缚。通过图层的recurrent_constraint参数配置一再权重的束缚。以下示例在LSTM图层上配置最大范数权重束缚。 # example of max norm on an lstm layer from keras.layers import LSTM from keras.constraints import max_norm ... model.add(LSTM(32, kernel_constraint=max_norm(3), recurrent_constraint=max_norm(3), bias_constraint==max_norm(3))) ... # example of max norm on an lstm layer from keras.layers import LSTM from keras.constraints import max_norm ... model.add(LSTM(32, kernel_constraint=max_norm(3), recurrent_constraint=max_norm(3), bias_constraint==max_norm(3))) ... 此刻我们知道怎样行使权重束缚API,让我们看一个有用的例子。 加权束缚案例研究 在本节中,我们将演示怎样行使权重束缚来镌汰MLP对简朴二元分类题目的太过拟合。此示例提供了一个模板,用于将权重束缚应用于您本身的神经收集以举办分类和回归题目。 二元分类题目 我们将行使尺度二进制分类题目来界说两个半圆数据集,每个类一个半圆。每个视察值都有两个输入变量,它们具有沟通的比例,类输出值为0或1.该数据集称为“月球”数据集,由于绘制时每个类中的视察值的外形。我们可以行使make_moons()函数从这个题目中天生调查功效。我们将为数据添加噪声并为随机数天生器播种,以便每次运行代码时天生沟通的样本。 # generate 2d classification dataset X, y = make_moons(n_samples=100, noise=0.2, random_state=1) 我们可以绘制两个变量在图表上作为x和y坐标的数据集,并将类值作为调查的颜色。下面列出了天生数据集并绘制数据集的完备示例。 # generate two moons dataset from sklearn.datasets import make_moons from matplotlib import pyplot from pandas import DataFrame # generate 2d classification dataset X, y = make_moons(n_samples=100, noise=0.2, random_state=1) # scatter plot, dots colored by class value df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y)) colors = {0:'red', 1:'blue'} fig, ax = pyplot.subplots() grouped = df.groupby('label') for key, group in grouped: group.plot(axax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key]) pyplot.show() # generate two moons dataset from sklearn.datasets import make_moons from matplotlib import pyplot from pandas import DataFrame # generate 2d classification dataset X, y = make_moons(n_samples=100, noise=0.2, random_state=1) # scatter plot, dots colored by class value df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y)) colors = {0:'red', 1:'blue'} fig, ax = pyplot.subplots() grouped = df.groupby('label') for key, group in grouped: group.plot(axax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key]) pyplot.show() (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |