pymc.total_norm_constraint#
- pymc.total_norm_constraint(tensor_vars, max_norm, epsilon=1e-07, return_norm=False)[源代码]#
根据一组张量的组合范数对其进行重新缩放
如果输入张量的组合范数超过阈值,则所有张量都会被重新缩放,使得组合范数等于阈值。
在训练循环神经网络时,通常会使用缩放梯度的范数 [1]。
- 参数:
- tensor_vars: TensorVariables 列表。
需要重新调整的张量。
- max_norm: float
总范数的阈值。
- epsilon: 标量, 可选
用于防止在除以非常小或零范数时数值不稳定的值。
- return_norm: bool
如果为真,则总范数也会被返回。
- 返回:
注释
总范数可用于监控训练。
参考文献
[1]Sutskever, I., Vinyals, O., & Le, Q. V. (2014): 使用神经网络进行序列到序列学习。在神经信息处理系统进展中 (pp. 3104-3112)。
示例
>>> from lasagne.layers import InputLayer, DenseLayer >>> import lasagne >>> from lasagne.updates import sgd, total_norm_constraint >>> x = pt.matrix() >>> y = pt.ivector() >>> l_in = InputLayer((5, 10)) >>> l1 = DenseLayer(l_in, num_units=7, nonlinearity=pt.special.softmax) >>> output = lasagne.layers.get_output(l1, x) >>> cost = pt.mean(pt.nnet.categorical_crossentropy(output, y)) >>> all_params = lasagne.layers.get_all_params(l1) >>> all_grads = pt.grad(cost, all_params) >>> scaled_grads = total_norm_constraint(all_grads, 5) >>> updates = sgd(scaled_grads, all_params, learning_rate=0.1)