您的位置 首页 > 数码极客

pytorch怎么读——pytorch怎么读取mat数据集!

全文共3376字,预计学习时长7分钟



对许多科学家、工程师和开发人员而言,TensorFlow是他们的第一个深度学习框架。


TensorFlow 1.0于2017年2月发布;但客观来说,它对用户不是非常友好。


过去几年里,由于Keras和PyTorch比TensorFlow更容易使用,这两个主要的深度学习库已得到较广的普及。


本文将从四个方面来介绍Keras和Pytorch,以及选择其中一个学习库的理由。


Keras


Keras自身并不是框架,它其实是一个位于其他高级学习框架之上的高级API。目前,它支持TensorFlow, Theano和CNTK。


Keras的吸引力在于使用简单。它是目前为止启动和运行最快且最简单的框架。神经网络的定义是直观的,使用功能API则允许人们将函数定义为层次。


Pytorch


Pytorch是由Facebook AI 研究组开发的深度学习框架(如Tensorflow)。像Keras一样,它也提炼了深度网络编程的大多混乱部分。


就编码风格的高级和低级而言,Pytorch介于Keras和TensorFlow之间。使用时,你有比Keras更多的灵活性和控制力,同时还无需冗长的声明式编程。


应该使用哪一个编程框架,是深度学习练习者一直在争论的问题。一般来说,这取决于个人偏好。但在做选择时,需要记住Keras和Pytorch的这几个方面的知识。


图片来源:un


用于定义模型的类与函数


为了定义深度学习模型,Keras设置了功能API。在功能API的范畴里,神经网络被定义为一组顺序函数,需要接连使用。比如说,函数定义层1的输出是函数定义层2的输入。


img_input = layers.Input(shape=input_shape) x = layers.Conv2D(64, (3, 3), activation='relu')(img_input) x = layers.Conv2D(64, (3, 3), activation='relu')(x) x = layers.MaxPooling2D((2, 2), strides=(2, 2))(x)


而Pytorch将网络设置为一个类,该类拓展了Torch库中的模块。与Keras类似,Pytorch使用的层为构建块,但由于它们在Pytorch的类中,因此它们属于‘__init__()’类下的一种字符,并由‘forward()’类执行。


class Ne): def __init__(self): super(Net, self).__init__() = nn.Conv2d(3, 64, 3) = nn.Conv2d(64, 64, 3) = nn.MaxPool2d(2, 2) def forward(self, x): x = F.relu((x)) x = ((x))) return xmodel = Net()

因为Pytorch允许访问Python的所有的类功能而不是简单的函数调用,所以定义网络可以更清晰,包容量更多。这真没有什么不好的,除非你认为,尽可能快地编写网络代码对你来说是最重要的,那么Keras使用起来会更方便。


张量和计算图对比标准数列


对于随意的程序员来说,Keras API隐藏了许多混乱的细节。定义网络层十分直观,通常默认设置就足够入门。


只有你处理到前沿的、或是奇特的模型时,才需要开始着手处理低级、细节的TensorFlow。


然而麻烦的是,当你处理到更低级别的TensorFlow时,随之而来的是所有具有挑战性的部分。必须保证排好所有的矩阵乘法。你甚至不用尝试打印任何一个图层输出,因为你将在终端得到一个漂亮的Tensor定义。


Pytorch对这些方面的要求往往更加宽松。你必须知道每个层输入和输出的大小,但这是一个可以快速掌握的简单技能。不必构建一个无法在调试中直观看到的抽象计算图。


Pytorch的另一个优点是可以在Torch Tensors和Numpy阵列之间来回切换。如果你要做一些自定义的东西,那么在TF张量和Numpy阵列之间来回切换可能会很麻烦。此时,开发人员需要对TensorFlow会话有充分的了解。


Pytorch的交互操作实际上更简单。你只要知道两个操作:一个是将Torch Tensor(一个变量对象)切换为Numpy,另一个就是切换到相反方向。


当然,如果你不需要执行任何花哨的东西,那么Keras就已经足够好了,因为不会遇到任何TensorFlow的阻碍。但如果你需要执行复杂的编程,那么使用Pytorch可能会更顺畅。


训练模型



在Keras中训练模型非常简单!仅需一个的‘.fit()’,你就可以甩开步子,享受这场“编程之行”。


history = model.fit_generator( generator=train_generator, epochs=10, validation_data=validation_generator)


在Pytorch中训练模型包括几个步骤:


1. 每批训练开始时初始化梯度

2. 运行前进模式

3. 运行后退模式

4. 计算损失并更新权重


for epoch in range(2): # loop over the dataset multiple times running_loss = 0.0 for i, data in enumerate(trainloader, 0): # Get the inputs; data is a list of [inputs, labels] inputs, labels = data # (1) Initialise gradients o() # (2) Forward pass outputs = net(inputs) loss = criterion(outputs, labels) # (3) Backward lo() # (4) Compute the loss and update the weights o()


这些都不过是运行训练的常见步骤!


如此一来,你总能意识到发生了什么。同时,由于这些模型训练步骤在训练不同模型时基本保持不变,因此它们显得十分不必要。


控制CPU与GPU模式



如果安装了tensorflow-gpu,你可以选择用Keras的默认设置启动并使用GPU。然后,如果你想把某些操作移动到CPU里,可以执行以下单行操作:


with ('/cpu:0'): y = apply_non_max_suppression(x)


至于Pytorch,你必须为每个torch张量和Numpy变量明确指定运行GPU。如果在CPU和GPU之间来回切换来进行不同的操作,这会使代码变得混乱,且有可能容易出错。


例如,要把以前的模型转移到GPU上运行,我们必须执行以下操作:


# Get the GPU device device = ("cuda:0" if () else "cpu") # Transfer the network to GPU net.to(device) # Transfer the inputs and labels to GPU inputs, labels = data[0].to(device), data[1].to(device)


Keras赢在它的简洁和良好的默认设置。


选择框架的一般建议


通常我们建议从Keras入门。


Keras无疑是最容易使用,理解且快速启动和运行的框架。你不用担心它的GPU设置,不需要摆弄抽象代码,总之,你不必做任何复杂的事情。你甚至可以在不触及任何一行TensorFlow 的情况下,执行自定义图层和损失函数的操作。


如果你开始深入了解深层网络的更精细的方面,或者正在执行一些非标准化的东西,那么Pytorch就是首选深度学习库。用Keras的话,就会多一些额外的工作,但不会太多,只不过这会使你的工作效率降低。可是,你依旧可以快速执行,训练和检测网络,而且还能轻松调试!

留言 点赞 关注

我们一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“pytorch怎么读,pytorch怎么读取mat数据集,pytorch怎么读音发音英语,pytorch怎么读取图片”边界阅读