如何利用tf.add_to_collection、tf.get_collection以及tf.add_n来简化正则项的计算
来源:互联网 发布:阿里云服务器上传网站 编辑:程序博客网 时间:2024/06/10 17:01
一般来说,为了控制模型的复杂程度,我们会在loss function中加入正则项:loss = data_item +lamda regularization_item*
正则项一般可以采用L1 Norm或者是L2 Norm。
以L2 Norm在为例,在tensorflow中我们可以通过一下代码来计算权重矩阵W所对应的L2 Norm:
regularizer = tf.contrib.layers.l2_regularizer(Regularization_Rate) # 创建regularizer对象,Regularization_Rate表示正则项在loss function中所占的比重loss_W = regularizer(W) # 计算权重矩阵W所对应的L2 Norm
但是,在神经网络中往往存在着多个权重矩阵W1,W2…Wn,因此最终计算得到的正则项是所有这些权重矩阵所对应的正则项之和,即:
loss = regularizer(W1)+regularizer(W2)+...+regularizer(Wn)
这样一来,不仅存在着计算loss的代码过于冗长的问题,而且当权重矩阵很多的时候容易出现遗漏。因此,我们希望在每次创建权重矩阵能够后立即计算出它所对应的正则项。我们采用以下代码来实现:
W1 = tf.get_variable('weights_1',shape,tf.random_normal_initializer()) # 创建权重矩阵W1tf.add_to_collection('losses',regularizer(W1)) # 将权重矩阵W1对应的正则项加入集合lossesW2 = tf.get_variable('weights_2',shape,tf.random_normal_initializer()) # 创建权重矩阵W2tf.add_to_collection('losses',regularizer(W2)) # 将权重矩阵W2对应的正则项加入集合losses...Wn = tf.get_variable('weights_n',shape,tf.random_normal_initializer()) # 创建权重矩阵Wntf.add_to_collection('losses',regularizer(Wn)) # 将权重矩阵Wn对应的正则项加入集合losseslosses_collection = tf.get_collection('losses') # 以列表的形式获取集合losses中的值,每一个值都作为列表中的一个元素loss = tf.add_n(losses_collection,name='loss') # 计算列表中所有元素之和,得到的结果就是正则项的值
阅读全文
1 0
- 如何利用tf.add_to_collection、tf.get_collection以及tf.add_n来简化正则项的计算
- tf.add_to_collection,tf.get_collection和tf.add_n的用法
- tf.add_to_collection、tf.get_collection、tf.add_n用法浅析
- TensorFlow学习--tf.add_to_collection与tf.get_collection使用
- tf.add_to_collection()
- tf.add_n函数的用法
- tensorflow: tf.add_to_collection 探究
- TF
- tf
- tensorflow学习——tf.get_collection(), tf.identity()
- tf.get_collection获取训练变量等效用法
- 【TensorFlow】tf.nn.local_response_normalization详解,lrn正则法如何计算?
- TF-IDF 的计算二
- TF-IDF计算一
- TF-IDF计算三
- TF-IDF计算四
- TF-IDF计算 Python
- csr_matrix计算tf
- 浅谈JavaScript严格模式
- is-a 和 has-a
- activity1
- DayDreamSDK
- 读CopyOnWriteArrayList有感
- 如何利用tf.add_to_collection、tf.get_collection以及tf.add_n来简化正则项的计算
- PHPCMS V9 如何启用伪静态
- Android进程整理
- 【BigHereo 36】---L9---C++真题之 改错题
- Android 8.0 Oreo:您需要知道的功能与更新
- yii框架redis结合php实现秒杀
- spring boot 集成 quartz,实现动态控制
- 自动抢红包,自动安装原理之AccessibilityService
- Redis入门基本操作