
正文
关于l2正则化java代码的信息
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何给某一层添加L2正则化
tf.nn.l2_loss()和tf.contrib.layers.l2_regularizer(),使用示例如下:
import tensorflow as tf
weights = tf.constant([[1,2,3], [4,5,6]], dtype=tf.float32)
sess = tf.InteractiveSession()
# 计算l2正则化java代码的是所有元素的平方和再除以2
print(tf.nn.l2_loss(weights).eval()())
# 等价于
print(tf.contrib.layers.l2_regularizer(1.)(weights).eval())
# output: 45.5
接下来将介绍两种方法将l2正则化项添加到损失函数后:
一、遍历trainable variables添加L2正则化项:
1.遍历可训练参数,将每个参数传入tf.nn.l2_loss()进行计算并相加起来l2正则化java代码;
2.乘以weight_decay并与base_loss相加。
weight_decay = 0.001
base_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits))
l2_loss = weight_decay * tf.add_n([tf.nn.l2_loss(tf.cast(v, tf.float32)) for v in tf.trainable_variables()])
loss = base_loss + l2_loss
注意:该过程对每个trainable variable都进行了l2正则化,包括权值w和偏置b。有种说法是如果对偏执b进行l2正则化将会导致欠拟合,一般只需要对权值w进行正则化,所以来看第二种方法。
二、在构造网络层时传入l2正则化函数:
如下所示,在构造网络层时,将'kernel_initializer'参数设为l2正则化函数,则tensorflow会将该权重变量(卷积核)的l2正则化项加入到集合 tf.GraphKeys.REGULARIZATOIN_LOSSES里。
x = tf.layers.conv2d(x, 512, (3, 3),
padding='same',
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.contrib.layers.l2_regularizer(0.001)
在计算loss时使用tf.get_collection()来获取tf.GraphKeys.REGULARIZATOIN_LOSSES集合,然后相加即可:
base_loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits(labels=labels, logits=logits))
l2_loss = tf.get_collection(tf.GraphKeys.REGULARIZATION_LOSSES)
loss = tf.add_n([base_loss] + l2_loss, name="loss")
欢迎补充指正。
相关问答
Q1: L1、L2正则化
正则化(Regularization)是机器学习中一种常用l2正则化java代码的技术,其主要目的是控制模型复杂度,减小过拟合。最基本的正则化方法是在原目标(代价)函数 中添加惩罚项,对复杂度高的模型进行“惩罚”。其数学表达形式为:
其中, 为训练样本以及标签, 为目标函数, 为权重系数向量, 为惩罚项, 为惩罚因子。不同的 对权重 的最优解有不同的偏好,因而会产生不同的正则化效果。最常用的是 范数和 范数,相应称之为 正则和 正则。
深入理解L1、L2正则化 从带约束条件的优化求解和最大后验概率两种思路对L1、L2正则化给出l2正则化java代码了分析。本文从只说下带约束条件的优化求解(因为目前我只能理解这种思路。。。)
我们知道,模型的复杂度可用VC维来衡量。通常情况下,模型VC维与系数 的个数成线性关系:即 数量越多,VC维越大,模型越复杂。因此,为l2正则化java代码了限制模型的复杂度,很自然的思路是减少系数 的个数,即让 向量中一些元素为0或者说限制 中非零元素的个数。为此,我们可在原优化问题中加入一个约束条件:
范数表示向量中非零元素的个数。但由于该问题是一个NP问题,不易求解,为此我们需要稍微“放松”一下约束条件。为了达到近似效果,我们不严格要求某些权重 为0,而是要求权重 应接近于0,即尽量小。从而可用 范数和 范数来近似 ,即:
利用拉格朗日算子法,我们可将上述带约束条件的最优化问题转换为不带约束项的优化问题,构造拉格朗日函数:
综上所述, 正则和 正则是通过将某些 为0或者接近于0,降低模型复杂度,防止过拟合。
当 为1维的时候, 和 的函数图像如下:
和 , 会向0的方向优化;区别在于, 中 将不会再变化,而 是接近于0但不会等于0(个人想法)。
《深度学习》第七章(7.1--7.2)有公式推导,有时间可以再好好看看,初看没看懂。
Q2: JAVA正则表达式代码
\S{6,18}
以下是常用的正则表达式希望能帮到你。
size=12px]1。^\d+$//匹配非负整数(正整数 + 0)
2。^[0-9]*[1-9][0-9]*$//匹配正整数
3。^((-\d+)|(0+))$//匹配非正整数(负整数 + 0)
4。^-[0-9]*[1-9][0-9]*$//匹配负整数
5。^-?\d+$//匹配整数
6。^\d+(\.\d+)?$//匹配非负浮点数(正浮点数 + 0)
7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$//匹配正浮点数
8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$//匹配非正浮点数(负浮点数 + 0)
9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$//匹配负浮点数
10。^(-?\d+)(\.\d+)?$//匹配浮点数
11。^[A-Za-z]+$//匹配由26个英文字母组成的字符串
12。^[A-Z]+$//匹配由26个英文字母的大写组成的字符串
13。^[a-z]+$//匹配由26个英文字母的小写组成的字符串
14。^[A-Za-z0-9]+$//匹配由数字和26个英文字母组成的字符串
15。^\w+$//匹配由数字、26个英文字母或者下划线组成的字符串
16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$//匹配email地址
17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$//匹配url
18。匹配中文字符的正则表达式: [\u4e00-\u9fa5]
19。匹配双字节字符(包括汉字在内):[^\x00-\xff]
20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
21。匹配空行的正则表达式:\n[\s| ]*\r
22。匹配HTML标记的正则表达式:/(.*).*\/\1|(.*) \//
23。匹配首尾空格的正则表达式:(^\s*)|(\s*$)
Q3: L1/L2正则化方法
对于一个回归模型(比如多项式回归)而言,假如我们用MSE作为其损失函数,为了避免其参数过多导致模型过拟合,我们可以加入正则化项。
当我们加一个平方项:
其中\theta是该模型各项的系数。
这样的正则化就是L2正则化,就是加了一个平方项。
如果不加平方项,而是绝对值:
这样的方法被称作L1正则化,也就是Lasso回归的方式。因为Lasso趋向于使得一部分\theta为0,所以Lasso可以做 特征选择 。
此外还有一种L0正则,也就是引入一项,使得的个数尽可能的小。但是这是一个离散最优化问题,可能需要穷举,这是一个NP难的问题。所以我们实际上是用L1正则来取代这种方法。
最后还有弹性网络(Elastic Net),其实就是将L1与L2正则项结合起来。
Q4: 正则表达式 java
1、java中"\"(斜杠)不能单独出现,必须以"\\"(双斜杠)的形式使用。
2、对于正则中有特殊含义的字符需要转义后才能按照原始的含义使用(java中在其前添加"\\")
3、对于字符串中的双斜杠(不作为正则表达式的)在匹配时需要按照双斜杠来匹配。
4、实现代码如下:
String string = "[N]C:\\Program Files";
String reg = "^\\s*\\[[NTS]\\][A-Z]:\\\\([a-zA-z]+\\W?)+$";
System.out.println (string.matches (reg));
关于l2正则化java代码和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







