tensorflow、pytorch两大框架的区别?(汇总)

tensorflow、pytorch两大框架的区别?

1.简介


       PyTorch 最大优势是建立的神经网络是动态的, 对比静态的 Tensorflow, 它能更有效地处理一些问题, 比如说 RNN 变化时间长度的输出。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。


       tensorflow2.0是tensorflow新发布的版本,从简单、强大、可扩展三个层面进行了重新设计。特别是在简单化方面,TensorFlow 2.0 提供更简化的 API、注重 Keras、结合了 Eager execution。
 

2.根据写法来理解:

1/2+1/2^2+1/2^3+...+1/2^50

(1)python

x=0
y=1
for iteration in range(50):
	x=x+y
	y=y/2
print(x)

(2)tensorflow1.0

import tensorflow as tf
print(tf.__version__)
x=tf.Variable(0.)
y=tf.Variable(1.)
#x=x+y
add_op=x.assign(x+y)
#y=y/2
div_op=y.assign(y/2)
with tf.Session() as sess:
	sess.run(tf.global_variables_initializer())
	for iteration in range(50):
		sess.run(add_op)
		sess.run(div_op)
	print(x.eval())

(3)pytorch

import torch
print(torch.__version__)

x=torch.Tensor([0.])
y=torch.Tensor([1.])
for iteration in range(50):
	x=x+y
	y=y/2
	print(x)

(4)tensorflow2.0

这里,注意Tensorflow2.0的安装:https://www.cnblogs.com/xiaosongshine/p/11615639.html

import tensorflow as tf
#tf.enable_eager_execution()
print(tf.__version__)

x=tf.constant(0.)
y=tf.constant(1.)
for iteration in range(50):
	x=x+y
	y=y/2
print(x.numpy())

 

3.理解tensorflow前后的静态图和动态图

TensorFlow之前是静态图,即必须把所有的操作以及网络结构定义好,最后才执行,是分开的,后来有了动态图功能,即Eager Execution 。

为什么要用图?

(1)节省资源、高效运算

我么只需要运算需要的依赖项,不需要的不进行运算。

(2)把整个运算分解成子环节,方便自动求导;

(3)对分布式运算友好,计算工作可以分给多个GPU、CPU,或者多个设备运算。

(4)很多机器学习的模型,本身就是适用组织成 图的格式

 

4.结论

PyTorch更有利于研究人员、爱好者、小规模项目等快速搞出原型。而TensorFlow1.0更适合大规模部署,特别是需要跨平台和嵌入式部署时。嵌入式用tensorflow。

Tensorflow1.0:静态图,难以调试
Tensorflow2.0与Pytorch:动态图,python自带调试的工具
Tensorflow相比于Pytorch的序列化与部署支持的更加广泛

【参考链接】

https://zhuanlan.zhihu.com/p/28636490

https://blog.csdn.net/weixin_45670288/article/details/103748668

你可能感兴趣的:(深度学习)