tensorflow - 如何在 tensorfow 中训练变量以及权重和偏差
问题描述
我对张量流有一个非常基本的疑问。
我在卷积层中添加了一个变量“var”,我想在训练期间用梯度更新这个变量(“var”),就像我们的权重和偏差被更新一样。我已将此变量添加到“可训练参数”中,但未更新。有人可以阐明如何训练变量吗?
解决方案
优化过程的重点是更新损失函数所依赖的变量,以降低损失的值。既不依赖也不依赖loss
任何变量loss
不依赖var
(换句话说var
,不用于导致计算 的任何计算),因此相对于loss
的梯度没有定义,也没有由优化器更新。loss
var
var
back_prop
~~~
编辑后答案:如果您有一组变量param_list
并且想要计算所有这些变量的 L2 正则化项,您可以通过以下方式进行:
# get the list of variables to calculate L2 loss over
param_list = tf.get_collection('var_params')
# a list of L2 regularization terms for each variable in param_list
L2_lst = [tf.nn.l2_loss(param) for param in param_list]
# Total L2 loss
L2_loss = tf.add_n(L2_lst)
在将 L2_loss添加到主要损失之前,可以将 L2_loss 乘以正则化参数 lambda :
L2_loss = tf.mulpiply(lamda_param, L2_lst)
loss = tf.add(loss1, L2_loss)
推荐阅读
- javascript - 覆盖 Typescript 声明类型以从 DOM 声明 Event 类的静态方法
- sql - SQLite 转换列中的每个值,除了一个
- javascript - 谷歌时间线图在悬停中添加第 4 条数据字符串
- nlp - 如何在对话流中使用题外话?
- wordpress - 恢复我的孩子主题备份
- caching - gem5模拟器中的缓存架构
- vhdl - 如何通过 clk 在 vhdl 中逐行读取文本文件?
- java - 在片段中使用 hashmap 和简单适配器
- ios - 快速在每个页面上添加相同的 NavigationBar
- amazon-web-services - 如何以编程方式获取 aws ebs 定价?