首页 > 解决方案 > 如何在 tensorfow 中训练变量以及权重和偏差

问题描述

我对张量流有一个非常基本的疑问。

我在卷积层中添加了一个变量“var”,我想在训练期间用梯度更新这个变量(“var”),就像我们的权重和偏差被更新一样。我已将此变量添加到“可训练参数”中,但未更新。有人可以阐明如何训练变量吗?

标签: tensorflow

解决方案


优化过程的重点是更新损失函数所依赖的变量,以降低损失的值。既不依赖也不依赖loss任何变量loss不依赖var(换句话说var,不用于导致计算 的任何计算),因此相对于loss的梯度没有定义,也没有由优化器更新。lossvarvarback_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)

推荐阅读