Tensorflow 张量流LSTM正则化
我想知道如何在TensorFlow中的LSTM中实现l1或l2正则化?TF不允许您访问LSTM的内部权重,因此我不确定如何计算范数并将其添加到损失中。我的损失函数现在只是RMSTensorflow 张量流LSTM正则化,tensorflow,lstm,Tensorflow,Lstm,我想知道如何在TensorFlow中的LSTM中实现l1或l2正则化?TF不允许您访问LSTM的内部权重,因此我不确定如何计算范数并将其添加到损失中。我的损失函数现在只是RMS 答案似乎不够。你提到的链接中的答案是正确的方法。遍历tf.trainable_variables并找到与LSTM相关的变量 另一种更复杂且可能更脆弱的方法是重新输入LSTM的变量范围,设置reuse\u variables=True,并调用get\u variable()。但事实上,原来的解决方案速度更快,脆性更小。TL
答案似乎不够。你提到的链接中的答案是正确的方法。遍历
tf.trainable_variables
并找到与LSTM相关的变量
另一种更复杂且可能更脆弱的方法是重新输入LSTM的变量范围,设置reuse\u variables=True,并调用get\u variable()。但事实上,原来的解决方案速度更快,脆性更小。TL;博士将所有参数保存在列表中,并将其L^n范数添加到目标函数中,然后再进行梯度优化 1) 在定义推理的函数中
net = [v for v in tf.trainable_variables()]
return *, net
2) 在成本中添加L^n范数,并根据成本计算梯度
weight_reg = tf.add_n([0.001 * tf.nn.l2_loss(var) for var in net]) #L2
cost = Your original objective w/o regulariser + weight_reg
param_gradients = tf.gradients(cost, net)
optimiser = tf.train.AdamOptimizer(0.001).apply_gradients(zip(param_gradients, net))
3) 在需要时运行Optimizer
_ = sess.run(optimiser, feed_dict={input_var: data})
可能重复的