mindarmour.utils
MindArmour的工具方法。
- class mindarmour.utils.LogUtil[源代码]
日志记录模块。
在长期运行的脚本中记录随时间推移的日志统计信息。
异常:
SyntaxError - 创建此类异常。
- add_handler(handler)[源代码]
添加日志模块支持的其他处理程序。
参数:
handler (logging.Handler) - 日志模块支持的其他处理程序。
异常:
ValueError - 输入handler不是logging.Handler的实例。
- debug(tag, msg, *args)[源代码]
记录’[tag] msg % args’,严重性为’DEBUG’。
参数:
tag (str) - Logger标记。
msg (str) - Logger消息。
args (Any) - 辅助值。
- error(tag, msg, *args)[源代码]
记录’[tag] msg % args’,严重性为’ERROR’。
参数:
tag (str) - Logger标记。
msg (str) - Logger消息。
args (Any) - 辅助值。
- info(tag, msg, *args)[源代码]
记录’[tag] msg % args’,严重性为’INFO’。
参数:
tag (str) - Logger标记。
msg (str) - Logger消息。
args (Any) - 辅助值。
- set_level(level)[源代码]
设置此logger的日志级别,级别必须是整数或字符串。支持的级别为 ‘NOTSET’(integer: 0)、’ERROR’(integer: 1-40)、’WARNING’(‘WARN’, integer: 1-30)、’INFO’(integer: 1-20)以及’DEBUG’(integer: 1-10)
例如,如果logger.set_level(‘WARNING’)或logger.set_level(21),则在运行时将打印脚本中的logger.warn()和logger.error(),而logger.info()或logger.debug()将不会打印。
参数:
level (Union[int, str]) - logger的级别。
- class mindarmour.utils.GradWrapWithLoss(network)[源代码]
构造一个网络来计算输入空间中损失函数的梯度,并由 weight 加权。
参数:
network (Cell) - 要包装的目标网络。
样例:
>>> from mindspore import Tensor >>> from mindarmour.utils import GradWrapWithLoss >>> from mindarmour.utils.util import WithLossCell >>> import mindspore.ops.operations as P >>> class Net(nn.Cell): ... def __init__(self): ... super(Net, self).__init__() ... self._softmax = P.Softmax() ... self._Dense = nn.Dense(10,10) ... self._squeeze = P.Squeeze(1) ... def construct(self, inputs): ... out = self._softmax(inputs) ... out = self._Dense(out) ... return self._squeeze(out) >>> data = Tensor(np.ones([2, 1, 10]).astype(np.float32)*0.01) >>> labels = Tensor(np.ones([2, 10]).astype(np.float32)) >>> net = Net() >>> loss_fn = nn.SoftmaxCrossEntropyWithLogits() >>> loss_net = WithLossCell(net, loss_fn) >>> grad_all = GradWrapWithLoss(loss_net) >>> out_grad = grad_all(data, labels)
- class mindarmour.utils.GradWrap(network)[源代码]
构建一个网络,以计算输入空间中网络输出的梯度,并由 weight 加权,表示为雅可比矩阵。
参数:
network (Cell) - 要包装的目标网络。
样例:
>>> from mindspore import Tensor >>> from mindarmour.utils import GradWrap >>> from mindarmour.utils.util import WithLossCell >>> import mindspore.ops.operations as P >>> class Net(nn.Cell): ... def __init__(self): ... super(Net, self).__init__() ... self._softmax = P.Softmax() ... self._Dense = nn.Dense(10,10) ... self._squeeze = P.Squeeze(1) ... def construct(self, inputs): ... out = self._softmax(inputs) ... out = self._Dense(out) ... return self._squeeze(out) >>> net = Net() >>> data = Tensor(np.ones([2, 1, 10]).astype(np.float32)*0.01) >>> labels = Tensor(np.ones([2, 10]).astype(np.float32)) >>> num_classes = 10 >>> sens = np.zeros((data.shape[0], num_classes)).astype(np.float32) >>> sens[:, 1] = 1.0 >>> wrap_net = GradWrap(net) >>> wrap_net(data, Tensor(sens))