纯Python实现Torch API,康奈尔副教授为自己的课程创建了DIY教学库

简介: 纯Python实现Torch API,康奈尔副教授为自己的课程创建了DIY教学库

机器之心报道

编辑:杜伟

该项目是为纽约校区 Cornell Tech 的「机器学习工程」课程开发的。


近日,机器之心在 GitHub 上发现了一个 DIY 教学库——MiniTorch,该库适用于希望了解深度学习(DL)系统底层实质概念的机器学习工程师。

MiniTorch 是一个 Torch API 的纯 Python 重新实现,展示了从零开始构建一个张量和自动微分库。最终得到的库能够运行 Torch 代码。


项目地址:https://github.com/minitorch/minitorch

项目创建者为康奈尔大学副教授(pre-tenure)Alexander Rush,该项目是为纽约校区 Cornell Tech 的「机器学习工程」课程开发的。这是一门硕士课程,涵盖了训练、调整、调试、可视化和部署 ML 系统中的系统级问题。


在开始构建库之前,用户首先需要根据 Setup 的步骤创建自己的工作区域(workspace)。

Setup 地址:https://minitorch.github.io/setup

然后,按照如下顺序创建必要的模块:

模块 0:Fundamental模块 1:Autodiff模块 2:Tensors模块 3:Efficiency模块 4:Networks

项目需要极少的计算资源。用户可在 GitHub 上找到模块启动代码,并且每个模块都从前面的模块中获得增益。

模块 0:Fundamentals

Fundamentals 一个入门模块,主要介绍了几种用于之后模块中测试和调试的核心技术,也涵盖了一些基础的数学基础。用户在这个模块中将开始构建 MiniTorch 的一些基础设施。


所有的启动代码可见:https://github.com/minitorch/Module-0

此外,每个模块有一组指南(Guides)来帮助完成这些任务。

模块 1:Autodiff

Autodiff 是在模块 0 的基础上构建的,向用户展示了如何仅使用标量(scalar)值来创建 MiniTorch 的第一个版本(mini-MiniTorch),涵盖了系统中的关键技术——自动微分。然后,用户即可以使用代码训练一个原始模型。


所有的启动代码可见:https://github.com/minitorch/Module-1

开始前,记得首先要激活自己的虚拟环境,然后 clone 配置:


模块 2:Tensors

现在已经有了一个围绕标量构建的完全开发的自动微分系统。但是,该系统在训练期间效率低下。每个标量值需要构建一个对象,并且每个操作需要存储之前创建的所有值的图。训练需要重复上述操作,运行线性模型等模型需要对网络中的每个项进行 for 循环。

Tensors 模块引入和实现的一个张量(tensor)对象可以解决这些问题。张量将很多重复的操作组合在一起,以节省 Python 开销并将组合后的操作传递给更快的实现。


所有启动器代码可见:https://github.com/minitorch/Module-2

开始前,用户依然首先要激活虚拟环境,然后 clone 配置:


模块 3:Efficiency

除了有助于简化代码之外,张量还为加速计算提供了基础。事实上,它们确实是使用 Python 等慢速语言高效编写深度学习代码的唯一方法。然而,到目前为止,我们所做的一切都没有比基本面更快。该模块专注于利用张量编写快速代码,首先在标准 CPU 上,然后使用 GPU。

所有启动器代码可见:https://github.com/minitorch/Module-3

同模块 1 和模块 2 一样,用户需要首先激活虚拟环境,然后 clone 配置:



模块 4:Networks


我们现在拥有一个功能齐全的深度学习库,具有像 Torch 这样的真实工业系统的大部分功能。为了利用这项艰苦的工作,该模块完全基于使用软件框架。特别是,我们将构建一个图像识别系统。我们将通过为 MNIST 上的 LeNet 版本构建基础架构来实现这一点:用于数字识别的经典卷积神经网络 (CNN),以及用于 NLP 情感分类的 1D conv。


所有启动器代码可见:https://github.com/minitorch/Module-4

用户依然需要激活虚拟环境,并 clone 配置:



此外,用户还需要安装和下载一个 MNIST 库。注意,Mac OS 用户可能需要安装 wget 来运行. sh 文件。


这样会在模块中添加一个 data / 目录。用户可以尝试用以下代码对安装进行测试:


基于Python,利用 NVIDIA TAO Toolkit 和 Deepstream 快速搭建车辆信息识别系统


NVIDIA TAO Toolkit是一个AI工具包,它提供了AI/DL框架的现成接口,能够更快地构建模型,而不需要编码。

DeepStream是一个用于构建人工智能应用的流媒体分析工具包。它采用流式数据作为输入,并使用人工智能和计算机视觉理解环境,将像素转换为数据。

DeepStream SDK可用于构建视觉应用解决方案,用于智能城市中的交通和行人理解、医院中的健康和安全监控、零售中的自助检验和分析、制造厂中的组件缺陷检测等

12月14日19:30-21:00,本次分享摘要如下:

  • 介绍 TAO Toolkit 的最新特性;
  • 介绍 NVIDIA Deepstream 的最新特性;
  • 利用 TAO Toolkit 丰富的预训练模型库,快速训练模型;
  • 直接利用 TAO Toolkit 的预训练模型和 Deepstream 部署应用;
  • 完成对车辆车牌的检测和识别,并对行人以及车辆的品牌,颜色,种类进行检测。
相关文章
|
17天前
|
调度 开发者 Python
Python中的异步编程:理解asyncio库
在Python的世界里,异步编程是一种高效处理I/O密集型任务的方法。本文将深入探讨Python的asyncio库,它是实现异步编程的核心。我们将从asyncio的基本概念出发,逐步解析事件循环、协程、任务和期货的概念,并通过实例展示如何使用asyncio来编写异步代码。不同于传统的同步编程,异步编程能够让程序在等待I/O操作完成时释放资源去处理其他任务,从而提高程序的整体效率和响应速度。
|
6天前
|
XML 存储 数据库
Python中的xmltodict库
xmltodict是Python中用于处理XML数据的强大库,可将XML数据与Python字典相互转换,适用于Web服务、配置文件读取及数据转换等场景。通过`parse`和`unparse`函数,轻松实现XML与字典间的转换,支持复杂结构和属性处理,并能有效管理错误。此外,还提供了实战案例,展示如何从XML配置文件中读取数据库连接信息并使用。
Python中的xmltodict库
|
15天前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
41 3
如何使用Python开发API接口?
|
3天前
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
|
8天前
|
JSON API 数据格式
如何使用Python开发1688商品详情API接口?
本文介绍了如何使用Python开发1688商品详情API接口,获取商品的标题、价格、销量和评价等详细信息。主要内容包括注册1688开放平台账号、安装必要Python模块、了解API接口、生成签名、编写Python代码、解析返回数据以及错误处理和日志记录。通过这些步骤,开发者可以轻松地集成1688商品数据到自己的应用中。
24 1
|
13天前
|
数据库 Python
异步编程不再难!Python asyncio库实战,让你的代码流畅如丝!
在编程中,随着应用复杂度的提升,对并发和异步处理的需求日益增长。Python的asyncio库通过async和await关键字,简化了异步编程,使其变得流畅高效。本文将通过实战示例,介绍异步编程的基本概念、如何使用asyncio编写异步代码以及处理多个异步任务的方法,帮助你掌握异步编程技巧,提高代码性能。
49 4
|
13天前
|
API 数据处理 Python
探秘Python并发新世界:asyncio库,让你的代码并发更优雅!
在Python编程中,随着网络应用和数据处理需求的增长,并发编程变得愈发重要。asyncio库作为Python 3.4及以上版本的标准库,以其简洁的API和强大的异步编程能力,成为提升性能和优化资源利用的关键工具。本文介绍了asyncio的基本概念、异步函数的定义与使用、并发控制和资源管理等核心功能,通过具体示例展示了如何高效地编写并发代码。
25 2
|
18天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
38 7
|
16天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
31 1
|
19天前
|
机器学习/深度学习 数据采集 算法
Python机器学习:Scikit-learn库的高效使用技巧
【10月更文挑战第28天】Scikit-learn 是 Python 中最受欢迎的机器学习库之一,以其简洁的 API、丰富的算法和良好的文档支持而受到开发者喜爱。本文介绍了 Scikit-learn 的高效使用技巧,包括数据预处理(如使用 Pipeline 和 ColumnTransformer)、模型选择与评估(如交叉验证和 GridSearchCV)以及模型持久化(如使用 joblib)。通过这些技巧,你可以在机器学习项目中事半功倍。
24 3

热门文章

最新文章

下一篇
无影云桌面