• 高效编程之 命令式编程/符号式编程


    编程范式,有 命令式 编程、函数式编程、符号式编程 等;

    python 属于解释性语言,即一句一句执行,然后 中间变量 由于不知道后面是否会用到 都 会被存储,每次 都会重新调用 函数;

    python 代码属于   命令式编程;

    同时 python  提供了 符号式编程,tensorflow 就是一种符号式编程,其先构建计算图,然后再统一执行计算 ;

    符号式编程的特点就是  快

    效率对比

    命令式编程

    def sample_add(a, b):
        return a + b
    
    def sample_fancy_func(a, b, c, d):
        e = sample_add(a, b)
        f = sample_add(c, d)
        g = sample_add(e, f)
        return g
    
    time.clock()
    for _ in range(1000):
        print(sample_fancy_func(1, 2, 3, 4))
    print(time.clock())     #

    符号式编程

    def add_str():
        """仅以字符串形式返回计算流程"""
        return '''
    def add(a, b):
        return a + b
    '''
    
    def fancy_func_str():
        """仅以字符串形式返回计算流程"""
        return '''
    def fancy_func(a, b, c, d):
        e = add(a, b)
        f = add(c, d)
        g = add(e, f)
        return g
    '''
    
    def evoke_str():
        """仅以字符串形式返回计算流程"""
        return add_str() + fancy_func_str() + '''
    print(fancy_func(1, 2, 3, 4))
    '''
    
    prog = evoke_str()
    print(prog)
    x = compile(prog, '', 'exec')  # 通过compile函数编译完整的计算流程并运行
    
    time.clock()
    for _ in range(1000):
        exec(x)
    print(time.clock())     #

    自己 可以试下

    当前的深度学习框架

    Theano和受其启发的后来者TensorFlow使用了符号式编程,Chainer和它的追随者PyTorch使用了命令式编程,mxnet使用了使用了命令式和符号式的混合编程:

    用户可用纯命令式编程进行开发和调试;当需要产品级别的计算性能和部署时,用户可以将大部分命令式程序转换成符号式程序来运行。

    小结

    参考资料:

    https://blog.csdn.net/weixin_42109859/article/details/104858932  命令式和符号式编程

    https://www.bbsmax.com/A/D8543ngpJE/

    https://www.bilibili.com/video/BV11U4y1o7sX/?spm_id_from=333.788&vd_source=f0fc90583fffcc40abb645ed9d20da32  计算性能-如何让你的pytorch代码高效(torchscript).mp4

  • 相关阅读:
    Python 十七天 成员
    python学习17——字典。
    python学习16——列表。
    python学习15——Random。
    python学习14——分支和函数。
    python学习13——while循环。
    python学习12——循环和列表
    python学习8——整理第一部分。
    Flask HTTP请求与响应
    Falsk 路由简析
  • 原文地址:https://www.cnblogs.com/yanshw/p/16559973.html
Copyright © 2020-2023  润新知