spark和tensorflow区别 tensorflow,pytorch,keras选哪个

对于许多开发者来说,TensorFlow是他们接触的第一个机器学习框架。TensorFlow框架尽管意义非凡,引起极大关注和神经网络学习风潮,但对一般开发者用户太不友好。

 

 

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_spark和tensorflow区别

 

软件开发者毕竟不是科学家,很多时候简单易学易用是程序员选择的第一要素。目前,两个主要的深度学习库Keras和Pytorch获得了大量关注,主要是因为它们的使用比较简单。

一、发展演变历程

  • keras

keras出身就像是一个天生丽质的姑娘,是多个计算后台框架的”前端”,轻量且容易入门。

   

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_tensorflow_02

 

keras是神经网络的一个模型计算框架,严格来说不是神经网络框架。本身没有重量级计算,它使用其他AI框架作为计算后台,傻瓜式的使用。它的计算后台还支持 Theano、CNTK(微软的一个AI计算后台)等,也就是说keras是多个计算后台的门面。官方设计哲学为Simple. Flexible. Powerful,是深度学习入门的绝佳技术路线

   

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_spark和tensorflow区别_03

 

举个tensorflow1.0的例子(伪代码)

登录后复制


定义Variable、constant、placeholder等。初始化global_variables_initializersession回话状态。再关闭session。

其中神经网络的各个层需要单独定义,还有一些激活函数、损失函数等概念。看到这些对于一个AI刚入门的开发者确实有些茫然。

keras是google的一个大佬开发的一个高度封装的模型框架,已开源到github上。起初的计算后台为Theano(和tensorflow差不多的一个框架),后来经过一系列的剧情,现在默认的计算后台就为tensorflow了。另外由于tensorflow1.0的细节过于繁琐混乱,升级版的tensorflow2.0基本抛弃了上述编写语法。其自家小弟tensorflow.keras 已经和keras版本同步了。

   

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_神经网络_04

backend为Tensorflow的keras

 

  • Pytorch

Pytorch是一个机器学习框架(类似于Theano、tensorflow等)。与Keras一样,它也抽象出了深层网络编程的许多混乱部分(大神踩过的坑,我们就没有必要踩了)。就学习难易和语言高级程度而言,Pytorch介于Keras和TensorFlow之间。但比起Keras具有更大的灵活性和控制能力,但又不必进行任何复杂的声明式编程,如果想深入了解机器学习pytorch库就是不错的选择。

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_spark和tensorflow区别_05

 



二、应用领域

  • keras

keras比较适合入门级学习,如程序员、系统开发者等非专业开发者,结合其后端(tensorflow等)部署,在工业领域在目前应用范围广。

  • Pytorch

目前,在学术界Pytorch已经超越其他框架,应为它轻部署,重验证。而keras相当于一个大前端,直接使用keras对于专业人员(科学家、学者、工程师)来说,屏蔽了许多细节,不利于研究,一般不是很合适。

三、模型定义方式

  • Keras

为了定义深度学习模型,Keras提供了函数式API。使用函数式API,神经网络被定义为一系列顺序化的函数,一个接一个地被应用。定义神经网络是非常直观的,因为使用API可以将层定义为函数。如下图示例(伪代码)

登录后复制

#定义modelmodel = keras.Sequential([    keras.layers.Flatten(input_shape=(28, 28)),    keras
.layers.Dense(128, activation='relu'),    keras.layers.Dense(10)])#编译compilemodel.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),              
metrics=['accuracy'])#拟合fitmodel.fit(train_images, train_labels, epochs=10)#评估evaluatetest_loss, 
test_acc = model.evaluate(test_images,  test_labels, verbose=2)print('Test accuracy:', test_acc)
#预测predictpredictions = model.predict(test_images)




  • Pytorch

在Pytorch中,你将网络设置为一个继承来自Torch库的torch.nn.Module的类。与Keras类似,Pytorch提供给你将层作为构建块的能力,但是由于它们在Python类中,示例如下(伪代码)。

登录后复制

class Net(nn.Module):    def __init__(self):        super(Net, self).__init__()pass           
def forward(self, x):          return xmodel = Net()

四、细节与张量的处理

  • Keras

Keras API向开发者隐藏了许多琐碎的细节(免得踩坑)。这使得定义网络层是简单,默认的设置通常足以让你入门,对应开发者来说就学习是1+1=2,而产量是>2的。

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_tensorflow keras 版本_06

 

  • Pytorch

Pytorch在这些方面更宽容一些。你需要知道每个层的输入和输出大小,但是这是一个比较容易的方面,你可以很快掌握它。你不需要构建一个抽象的计算图,避免了在实际调试时无法看到该抽象的计算图的细节。另外,你可以在Torch张量和Numpy数组之间来回切换,它们是内存共享的。如果你需要实现一些自定义的东西,那么在TF张量和Numpy数组之间来回切换可能会很麻烦,这要求开发人员对TensorFlow会话有一个深入的理解。

五、训练模型

  • keras

如果你没有更加奇特的需求,只想简单了解尝试一下,强烈推荐keras,它的一个.fit(),简直让你爱不释手。

  • Pytorch

Pytorch在每次训练开始就有前向传播、反向传播、计算损失并更新权重等等,不熟悉框架时就要踩坑。

spark和tensorflow区别 tensorflow,pytorch,keras选哪个_spark和tensorflow区别_07

 

六、CPU与GPU模式

  • keras

keras的tensorflow版本,cpu和gpu是自动过渡的,不需要手工调整。

  • Pytorch

Pytorch必须显式地为每个torch张量和numpy变量启用GPU,一般使用“.to()”方法。但这种方式容易使代码变得混乱,如果不同的操作在CPU和GPU之间来回移动,那么很容易踩坑。

七、选择建议

  • Keras

Keras是最容易使用和快速入门的前端框架。你甚至可以在不接触后端(tensorflow等)的任何一行代码的情况下实现神经网络的分类、聚类、自然语言处理等问题。

  • pytorch

如果想深入了解神经网络的各个细节及执行历史,那么Pytorch可能是你首选。

一般建议keras入门,pytorch进阶。

 spark和tensorflow区别 tensorflow,pytorch,keras选哪个_tensorflow keras 版本_08


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空