机器学习常用的5种学习框架

随着深度学习和人工智能在最近这几年的迅速发展,有许多的深度学习框架的引入。深度学习框架的创建目标是在GPU上高效运行深度学习系统,它们都依赖于计算机图的概念,计算图定义了需要执行的计算顺序。这些框架中你使用的是一种可以建立计算图的证语言,但它语言执行的机制与其宿主语言本身机制有所不同。最后,计算图可以并行地在目标GPU中优化和运行。那常见的有以下这几种深度学习框架
1. TensorFlow (Google)

TensorFlow 最初是由Google Brain Team 的研究人员的工程师所研发的。他们目的是面向深度神经网络和机器智能方面的研究。2015年底,TensorFlow 正式在GitHub上开源。TensorFlow 对于快速基于图形计算方面非常有用。现在的版本,灵活的TensorFlow API 可以通过其 GPU 支持的架构在多个设备之间快速部署模型。

TensorFlow 生态系统主要有以下三个组成部分:

  • 用C++ 编写的TensorFlow API 包含用于定义模型的使用数据训练模型的API, 也是有一个友好的Python接口。
  • TensorBoard 是一个可视化工具包,它可以帮助分析,可视化和调试 TensorFlow 计算图。
  • TensorFlow Serving 是一种灵活的高性能服务系统, 用于在生产环境中部署预先训练好的机器学习模型。Serving 也是由C++ 编写并可通过Python 接口访问,可以即时从旧模式切换到新模式.

TersorFlow 目前已经被广泛应用于学术研究的工业应用。但有一些值得注意的是当前用途包括DeepSpeechRankBrainSmartReplyOn-Device Computer Vision。都可以在TensorFlow的GitHub项目中查看一些官方用途、研究模型、示例和教程。

以下是一个运行的示例, 在这里,在tensorFlow上用随机数据训练一个期于L2损失的2层ReLU网络。

import numpy as np
import tensorflow as tf


#Batch size = 32, Input Dimension = 500, Hidden Dimension = 50


x = tf.placeholder(tf.float32, shape=(32, 500))
y = tf.placeholder(tf.float32, shape=(32, 500))
w1 = tf.placeholder(tf.float32, shape=(500, 50))
w2 = tf.placeholder(tf.float32, shape=(50, 500))


# Forward pass

h = tf.maximum(tf.matmul(x,w1), 0)
y_pred = tf.matmul(h, w2)
diff = y_pred - y


# Use predefined common losses

loss = tf.losses.mean_squared_error(y_pred, y)


# Compute loss of gradient

grad_w1, grad_w2 = tf.gradients(loss, [w1, w2])


# run the graph multiple times

with tf.Session() as sess:

    # Create numpy arrays
    values = {x: np.random.randn(32, 500),
              w1: np.random.randn(500, 50),
              w2: np.random.randn(50, 500),
              y: np.random.randn(32, 500)}



# Train the network

learning_rate = 1e-5

# Run the graph in a loop
for t in range(20):
    out = sess.run([loss, grad_w1, grad_w2], feed_dict=values)
    loss_val, grad_w1_val, grad_w2_val = out
    values[w1] -= learning_rate * grad_w1_val
    values[w2] -= learning_rate * grad_w2_val
    
    
复制代码

代码中有两个组件: 定义计算图并多次运行这个定义的计算图。 定义计算图的时候, 输入x, 权重w1和w2 以级目标y 创建placeholders 进行占位。在向前传播中,计算目标y 的预测以级损失值(损失值为y的真实值与预测值之间L2距离). 最后让TensorFlow 计算关于 w1 和w2 的梯度损失。

完成计算图构建之后,创建一个会话框来运行计算图。 这里创建了numpy 数组, 它将填充图创建的占位符,将它们数值提供给x,y,w1,w2, 为了训练网络,反复运行计算图,使用梯度来更新权重然后获得loss,grad_w1 和grad_w2的numpy数组。

2. Theano (蒙特利尔大学)

Theano 是另一个用于快速数值计算的 Python 库,可以在CPU 或GPU 上运行。 它是蒙特利大学蒙特利尔学习算法小组 开发的一个开源项目。它的一些最突出的特性包括GPU 的透明使用,与NumPy 相结合,高效的符号区分,速度/稳定性优化以级大量的单元测试。但!MILA 实验室负责人在 2017年11月宣布他们不再积极维护或开发Theano。 其原因是在于Theano 多年来推出的大部分创新技术现在被其他框架所采用和完善。以下是开源库的地址

3. PyTorch (Facebook)

Pytorch 在学术研究者中很受欢迎, 也是相对比较新的深度学习框架。 Facebook 人工智能研究组开发了pyTorch 来应对一些在它前任数据库Torch 使用中遇到的问题。但它的编程语言Lua 的普及程度不高, 因此 Torch 没办法像 Google TensorFlow 那样的迅猛发展。PyTorch 采用了被已经为许多研究人员、开发人员和数据科学家所熟悉的原始Python 命令式编程风格。

4. Torch (NYU / Facebook)

Torch 是Facebook 的 开源机器学习库科学计算框架 和基于 Lua编程语言的脚本语言。 它提供了广泛的深度学习算法,被 Facebook 、IBM 、Yandex 和其他公司用于解决数据流的硬件问题。

5. Caffe (UC Berkeley)

Caffe 是一个兼具表达性、速度的思维模块化的深度学习框架。 由伯克利人工智能研究小组和伯克利视觉学习中心开发。虽然它的内核是用C++编写的、但Caffe 有Python 和 Matlab 相关接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值