Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 张量流LSTM正则化_Tensorflow_Lstm - Fatal编程技术网

Tensorflow 张量流LSTM正则化

Tensorflow 张量流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

我想知道如何在TensorFlow中的LSTM中实现l1或l2正则化?TF不允许您访问LSTM的内部权重,因此我不确定如何计算范数并将其添加到损失中。我的损失函数现在只是RMS


答案似乎不够。

你提到的链接中的答案是正确的方法。遍历
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})
可能重复的