编程范式,有 命令式 编程、函数式编程、符号式编程 等;
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/
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/279496.html