《昇思25天学习打卡营第8天|LXS》

静态图加速

动态图模式

  • 首先说动态图,动态图是指计算图的构建与计算同时发生,所有节点都可以方便存取,但是同时难以对整个计算图优化,在MIndspore中动态图模式又称为PyNative。
  • 进行网络构建
import numpy as np
import mindspore as ms
from mindspore import nn, Tensor
ms.set_context(mode=ms.PYNATIVE_MODE)  # 使用set_context进行动态图模式的配置

class Network(nn.Cell):
    def __init__(self):
        super().__init__()
        self.flatten = nn.Flatten()
        self.dense_relu_sequential = nn.SequentialCell(
            nn.Dense(28*28, 512),
            nn.ReLU(),
            nn.Dense(512, 512),
            nn.ReLU(),
            nn.Dense(512, 10)
        )

    def construct(self, x):
        x = self.flatten(x)
        logits = self.dense_relu_sequential(x)
        return logits

model = Network()
input = Tensor(np.ones([64, 1, 28, 28]).astype(np.float32))
output = model(input)
print(output)

静态图模式

  • 通过修改context就可以方便的转换为静态图模式了

  • 静态图模式又被称为Graph模式,可以进行全局优化,应用于稳定的网络和有高性能需求的场景

  • 注意在MIndspore中,静态图模式主要面向Tensor对象的优化,在其他对象的应用中,Graph模式的效果有限

基于装饰器的开启方式

  • MIndspore提供了jit装饰器,使用jit装饰器即可完成静态图模式的转换,这样我们也可以在想要使用静态图模式的块中使用装饰器来灵活运用静态图模式优化,在其它模型部分依然可以使用动态图模式。
@ms.jit  # 使用ms.jit装饰器,使被装饰的函数以静态图模式运行

基于context全局的开启方式

  • 上述提到的context修改就是全局模式修改,比起装饰器模式更加直接也更加不灵活,总的来说就是提供了部分转换和全局转换的选择。
ms.set_context(mode=ms.GRAPH_MODE)  # 使用set_context进行运行静态图模式的配置

在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值