加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

比拟复现34个预实习模子,PyTorch和Keras你选谁?

发布时间:2019-03-11 04:14:14 所属栏目:建站 来源:机器之心编译
导读:Keras 和 PyTorch 虽然是对初学者最友爱的深度进修框架,它们用起来就像描写架构的简朴说话一样,汇报框架哪一层该用什么。这样镌汰了许多抽象事变,譬喻计划静态计较图、别离界说各张量的维度与内容等等。 可是,到底哪一个框架更好一点呢?虽然差异的开拓
副问题[/!--empirenews.page--]

Keras 和 PyTorch 虽然是对初学者最友爱的深度进修框架,它们用起来就像描写架构的简朴说话一样,汇报框架哪一层该用什么。这样镌汰了许多抽象事变,譬喻计划静态计较图、别离界说各张量的维度与内容等等。

可是,到底哪一个框架更好一点呢?虽然差异的开拓者和研究者会有差异的喜爱,也会有差异的观点。本文首要从抽象水和善机能两个方面比拟 PyTorch 与 Keras,并先容了一个新的基准,它复现并比拟了两个框架的全部预实习模子。

在 Keras 和 PyTorch 基准项目中,MIT 在读博士 Curtis G. Northcutt 复现了 34 个预实习模子。该基准团结了 Keras 和 PyTorch,并将它们同一到一个框架内,这样我们就能知道这两个框架的比拟功效,知道差异模子用什么框架好。譬喻,项目作者暗示 ResNet 架构的模子行使 PyTorch 要比 Keras 结果好,Inception 架构的模子行使 Keras 又要比 PyTorch 好。

Keras 和 PyTorch 基准项目:https://github.com/cgnorthcutt/benchmarking-keras-pytorch

一、两大框架的机能与易用性

作为 TensorFlow 的高度封装,Keras 的抽象条理很是高,许多 API 细节都潜匿了起来。固然 PyTorch 比 TensorFlow 的静态计较图更轻易行使,但总体上 Keras 潜匿的细节更多一些。而对付机能,着实各框架城市颠末大量的优化,它们的不同并不是很明明,也不会作为首要的选择尺度。

1. 易用性

Keras 是一个更高级此外框架,将常用的深度进修层和运算封装进便捷的结构块,并像积木一样搭建伟大模子,开拓者和研究者不必要思量深度进修的伟大度。

PyTorch 提供一个相对较初级此外尝试情形,行使户可以越发自由地编写自界说层、查察数值优化使命等等。譬喻在 PyTorch 1.0 中,编译器材 torch.jit 就包括一种名为 Torch Script 的说话,它是 Python 的子说话,开拓者行使它能进一步对模子举办优化。

我们可以通过界说简朴的卷积收集看看两者的易用性:

  1. model = Sequential() 
  2. model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) 
  3. model.add(MaxPool2D()) 
  4. model.add(Conv2D(16, (3, 3), activation='relu')) 
  5. model.add(MaxPool2D()) 
  6. model.add(Flatten()) 
  7. model.add(Dense(10, activation='softmax')) 

如上所示为 Keras 的界说方法,许多时辰运算城市作为参数嵌入到 API 中,因此代码会显得很是简捷。如下所示为 PyTorch 的界说方法,它一样平常都是通过类和实例的方法界说,且详细运算的许多维度参数都必要界说。

  1. class Net(nn.Module): 
  2.     def __init__(self): 
  3.         super(Net, self).__init__() 
  4.  
  5.         self.conv1 = nn.Conv2d(3, 32, 3) 
  6.         self.conv2 = nn.Conv2d(32, 16, 3) 
  7.         self.fc1 = nn.Linear(16 * 6 * 6, 10)  
  8.         self.pool = nn.MaxPool2d(2, 2) 
  9.  
  10.     def forward(self, x): 
  11.         x = self.pool(F.relu(self.conv1(x))) 
  12.         x = self.pool(F.relu(self.conv2(x))) 
  13.         xx = x.view(-1, 16 * 6 * 6) 
  14.         x = F.log_softmax(self.fc1(x), dim=-1) 
  15.  
  16.         return x 
  17.  
  18. model = Net() 

固然 Keras 感受比 PyTorch 更易于行使,但两者的不同不大,都祈望模子的编写能更便捷。

2. 机能

今朝有许多比拟各框架机能的尝试都表白 PyTorch 的逊?з度对比 Keras 会快一些。如下两张图表展示了差异框架在差异硬件和模子范例的示意:

比拟复现34个预实习模子,PyTorch和Keras你选谁?

下面两张同样展示了差异模子在 PyTorch 和 Keras 框架下的机能,这两份 18 年的测试都表白 PyTorch 的速率要比 Keras 快那么一点点。

这两份比拟细节可查阅:

  • https://github.com/ilkarman/DeepLearningFrameworks/
  • https://wrosinski.github.io/deep-learning-frameworks/

二、Keras 和 PyTorch Benchmark

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读