标签归档:deep-learning

Fastai – 快速深度学习模块

欢迎光临Fastai

FAST AI使用现代最佳实践简化了快速准确的神经网络训练

正在安装

您可以在不安装的情况下使用Fastai,方法是使用Google Colab事实上,本文档的每一页还可以作为交互式笔记本使用-单击任何页面顶部的“Open in CoLab”将其打开(请确保将Colab运行时更改为“GPU”以使其快速运行!)请参阅上的fast.ai文档Using Colab了解更多信息

只要你运行的是Linux或Windows(不支持Mac),你就可以用conda在你自己的机器上安装Fastai(强烈推荐)。对于Windows,请参阅“在Windows上运行”了解重要说明

如果您使用的是miniconda(推荐)然后运行(请注意,如果您替换conda使用mamba安装过程将更快、更可靠):

conda install -c fastchan fastai

或者如果您正在使用Anaconda然后运行:

conda install -c fastchan fastai anaconda

要使用pip安装,请使用:pip install fastai如果使用pip安装,则应首先按照PyTorch安装PyTorchinstallation instructions

如果您计划自己开发Fastai,或者想要走在前列,您可以使用可编辑安装(如果这样做,您还应该使用的可编辑安装fastcore来配合它。)首先安装PyTorch,然后:

git clone https://github.com/fastai/fastai
pip install -e "fastai[dev]"

学习速度快

开始快速学习(和深度学习)的最好方法是阅读the book,并完成the free course

要了解使用FAST AI可能实现的功能,请查看Quick Start,它展示了如何使用大约5行代码来构建图像分类器、图像分割模型、文本情感模型、推荐系统和表格模型。对于每个应用程序,代码基本相同

通读一下Tutorials学习如何在您自己的数据集上训练您自己的模型。使用导航侧栏浏览FAST AI文档。这里记录了每个类、函数和方法

要了解图书馆的设计和动机,请阅读peer reviewed paper

关于FAST

Fastai是一个深度学习库,它为从业者提供高级组件,这些组件可以快速、轻松地在标准深度学习领域提供最先进的结果,并为研究人员提供可以混合和匹配的低级组件,以建立新的方法。它的目标是在易用性、灵活性或性能方面不做实质性妥协的情况下完成这两件事。这要归功于精心分层的体系结构,该体系结构以分离的抽象方式表达了许多深度学习和数据处理技术的公共底层模式。通过利用底层Python语言的动态性和PyTorch库的灵活性,可以简洁而清晰地表达这些抽象。FAST AI包括:

  • 一种新的Python类型调度系统和张量的语义类型层次结构
  • 一个GPU优化的计算机视觉库,可以在纯Python中扩展
  • 一种优化器,它将现代优化器的常见功能重构为两个基本部分,允许在4-5行代码中实现优化算法
  • 一种新颖的双向回调系统,可以访问数据、模型或优化器的任何部分,并在培训期间随时更改它们
  • 一种全新的数据挡路接口
  • 还有更多

FAST AI围绕两个主要设计目标进行组织:平易近人和快速高效,同时也是深度可破解和可配置的。它构建在提供可组合构建块的低级API层次结构之上。这样,想要重写高级API的一部分或添加特定行为以满足其需求的用户不必学习如何使用最低级别

从其他库迁移

从普通的PyTorch、Ignite或任何其他基于PyTorch的库迁移非常容易,甚至可以将Fastai与其他库结合使用。通常,您将能够使用所有现有的数据处理代码,但将能够减少培训所需的代码量,并更容易地利用现代最佳实践。以下是一些受欢迎的库中的迁移指南,可帮助您上路:

Windows支持

使用安装时mambaconda替换-c fastchan在使用的安装中-c pytorch -c nvidia -c fastai,因为Windows当前不支持Fastchan

由于Jupyter和Windows上的Python多处理问题,num_workersDataloader自动重置为0,以避免Jupyter挂起。这使得Windows上的Jupyter上的计算机视觉等任务比Linux上的要慢很多倍。如果从脚本使用FastAI,则不存在此限制

看见this example要充分利用Windows上的Fastai API,请执行以下操作

测试

要并行运行测试,请启动:

nbdev_test_nbsmake test

要通过所有测试,您需要安装以下可选依赖项:

pip install "sentencepiece<0.1.90" wandb tensorboard albumentations pydicom opencv-python scikit-image pyarrow kornia \
    catalyst captum neptune-cli

测试是使用nbdev,例如,请参阅的文档test_eq

贡献

克隆此存储库后,请运行nbdev_install_git_hooks在你的航站楼里。这将设置git挂钩,它会清理笔记本以删除笔记本中存储的无关内容(例如,您运行了哪些单元格),这会导致不必要的合并冲突。

在提交PR之前,请检查当地图书馆和笔记本是否匹配。剧本nbdev_diff_nbs我可以让你知道当地图书馆和笔记本有什么不同

  • 如果您对其中一个导出的单元格中的笔记本进行了更改,则可以使用以下命令将其导出到库nbdev_build_libmake fastai
  • 如果您对库进行了更改,则可以使用以下命令将其导出回笔记本nbdev_update_lib

码头集装箱

对于那些对这个项目的官方码头集装箱感兴趣的人,可以在here

SpaCy-基于Python语言的💫工业级自然语言处理

Spacy:工业实力NLP

Spacy是一个图书馆,用于高级自然语言处理在Python和Cython中。它建立在最新的研究基础上,从第一天起就被设计用于真正的产品中

Spacy伴随着pretrained pipelines,并且当前支持标记化和培训60多种语言它的特点是最先进的速度和神经网络模型用于标记、解析命名实体识别文本分类更重要的是,通过预先培训实现多任务学习变形金刚像伯特一样,也是一个随时准备生产的training system以及轻松的模型打包、部署和工作流管理。Spacy是在麻省理工学院许可下发布的商业开源软件

💫现在发布3.0版!
Check out the release notes here.

📖文档

文档
⭐️spaCy 101 对Spacy来说是新手吗?这是你需要知道的一切!
📚Usage Guides 如何使用Spacy及其功能
🚀New in v3.0 新功能、向后不兼容性和迁移指南
🪐Project Templates 您可以克隆、修改和运行端到端工作流
🎛API Reference Spacy的API的详细参考资料
📦Models 为Spacy下载经过培训的管道
🌌Universe 来自Spacy生态系统的插件、扩展、演示和书籍
👩‍🏫Online Course 在这个免费的交互式在线课程中学习Spacy
📺Videos 我们的YouTube频道提供视频教程、讲座等
🛠Changelog 更改和版本历史记录
💝Contribute 如何为Spacy项目和代码库做出贡献

💬在哪里提问?

Spacy项目由@honnibal@ines@svlandeg@adrianeboyd@polm请理解,我们将不能通过电子邮件提供个人支持。我们还相信,如果帮助被公开分享,那么它就更有价值,这样更多的人就可以从中受益

类型 站台
🚨错误报告 GitHub Issue Tracker
🎁功能要求和想法 GitHub Discussions
👩‍💻使用问题 GitHub Discussions·Stack Overflow
🗯一般性讨论 GitHub Discussions

功能

  • 支持60多种语言
  • 训练有素的管道对于不同的语言和任务
  • 带预训练的多任务学习变形金刚像伯特一样
  • 对预训人员的支持词向量和嵌入
  • 最先进的速度
  • 生产准备就绪培训系统
  • 语言动机标记化
  • 命名的组件实体识别词性标注、依存关系分析、句子切分文本分类、词汇化、词法分析、实体链接等
  • 通过以下功能轻松扩展自定义组件和属性
  • 支持中的自定义模型PyTorchTensorFlow和其他框架
  • 内置可视化工具对于语法和NER
  • 简单易懂模型包装、部署和工作流管理
  • 稳健、经过严格评估的准确性

📖有关更多详细信息,请参阅facts, figures and benchmarks

⏳安装空间

有关详细的安装说明,请参阅documentation

  • 操作系统:MacOS/OS X·Linux·Windows(Cygwin、MinGW、Visual Studio)
  • Python版本:Python 3.6+(仅64位)
  • 包管理器pip·conda(通过conda-forge)

管道

使用pip,spacy发行版以源码包和二进制轮子的形式可用。在安装Spacy及其依赖项之前,请确保您的pipsetuptoolswheel是最新的

pip install -U pip setuptools wheel
pip install spacy

要安装额外的数据表以进行列举化和规范化,可以运行pip install spacy[lookups]或安装spacy-lookups-data分开的。使用列举化数据创建空白模型需要使用查找包,并需要使用尚未附带预先训练的模型和第三方库支持的语言进行词汇化

使用pip时,一般建议在虚拟环境中安装包,避免修改系统状态:

python -m venv .env
source .env/bin/activate
pip install -U pip setuptools wheel
pip install spacy

孔达

您也可以从安装Spacyconda通过conda-forge频道。有关原料(包括构建配方和配置),请查看this repository

conda install -c conda-forge spacy

更新空间

Spacy的一些更新可能需要下载新的统计模型。如果您运行的是spacy v2.0或更高版本,则可以使用validate命令检查您安装的型号是否兼容,如果不兼容,则打印有关如何更新它们的详细信息:

pip install -U spacy
python -m spacy validate

如果您训练过自己的模型,请记住您的训练和运行时输入必须匹配。更新Spacy后,我们建议重新培训您的模型使用新版本

📖有关从spacy 2.x升级到spacy 3.x的详细信息,请参阅migration guide

📦下载模型包

经过培训的空间管道可以安装为Python包这意味着它们是应用程序的一个组件,就像任何其他模块一样。可以使用Spacy的安装模型download命令,或通过将pip指向路径或URL手动执行

文档
Available Pipelines 详细的管道描述、精度数字和基准
Models Documentation 详细的使用和安装说明
Training 如何根据您的数据培训您自己的管道
# Download best-matching version of specific model for your spaCy installation
python -m spacy download en_core_web_sm

# pip install .tar.gz archive or .whl from path or URL
pip install /Users/you/en_core_web_sm-3.0.0.tar.gz
pip install /Users/you/en_core_web_sm-3.0.0-py3-none-any.whl
pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.0.0/en_core_web_sm-3.0.0.tar.gz

加载和使用模型

要加载模型,请使用spacy.load()使用模型名称或模型数据目录的路径

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("This is a sentence.")

您还可以import直接通过其全名创建模型,然后调用其load()不带参数的方法

import spacy
import en_core_web_sm

nlp = en_core_web_sm.load()
doc = nlp("This is a sentence.")

📖有关更多信息和示例,请查看models documentation

⚒从源代码编译

安装Spacy的另一种方法是克隆其GitHub repository并从源头上建造它。如果您想要更改代码库,这是常用的方法。您需要确保您有一个由Python发行版组成的开发环境,其中包括头文件、编译器pipvirtualenvgit已安装。编译器部分是最棘手的。如何做到这一点取决于您的系统

站台
Ubuntu 通过以下方式安装系统级依赖项apt-getsudo apt-get install build-essential python-dev git
Mac 安装最新版本的XCode包括所谓的“命令行工具”。MacOS和OS X附带预装的Python和Git
窗口 安装一个版本的Visual C++ Build ToolsVisual Studio Express与用于编译Python解释器的版本相匹配

有关更多详细信息和说明,请参阅上的文档compiling spaCy from source以及quickstart widget获取适合您的平台和Python版本的正确命令

git clone https://github.com/explosion/spaCy
cd spaCy

python -m venv .env
source .env/bin/activate

# make sure you are using the latest pip
python -m pip install -U pip setuptools wheel

pip install -r requirements.txt
pip install --no-build-isolation --editable .

要与附加软件一起安装,请执行以下操作:

pip install --no-build-isolation --editable .[lookups,cuda102]

🚦运行测试

Spacy伴随着一个extensive test suite为了运行测试,您通常需要克隆存储库并从源代码构建空间。这还将安装在中定义的所需开发依赖项和测试实用程序requirements.txt

或者,您可以运行pytest在已安装的spacy包裹。别忘了也要通过Spacy的安装测试实用程序requirements.txt

pip install -r requirements.txt
python -m pytest --pyargs spacy

Data-science-ipython-notebooks-数据科学Python笔记本:深度学习

数据-科学-IPython-笔记本

索引

深度学习

演示深度学习功能的IPython笔记本

张量流教程

其他TensorFlow教程:

笔记本电脑 描述
tsf-basics 在TensorFlow中学习基本操作,TensorFlow是Google提供的各种感知和语言理解任务的库
tsf-linear 在TensorFlow中实现线性回归
tsf-logistic 在TensorFlow中实现Logistic回归
tsf-nn 在TensorFlow中实现最近邻居
tsf-alex 在TensorFlow中实现AlexNet
tsf-cnn 卷积神经网络在TensorFlow中的实现
tsf-mlp 在TensorFlow中实现多层感知器
tsf-rnn 递归神经网络在TensorFlow中的实现
tsf-gpu 了解TensorFlow中的基本多GPU计算
tsf-gviz 了解TensorFlow中的图形可视化
tsf-lviz 了解TensorFlow中的损耗可视化

张量流练习

笔记本电脑 描述
tsf-not-mnist 通过为TensorFlow中的培训、开发和测试创建带有格式化数据集的Pickle,了解简单的数据管理
tsf-fully-connected 在TensorFlow中使用Logistic回归和神经网络逐步训练更深更精确的模型
tsf-regularization 通过训练全连通网络对TensorFlow中的notMNIST字符进行分类来探索正则化技术
tsf-convolutions 在TensorFlow中创建卷积神经网络
tsf-word2vec 在TensorFlow中对Text8数据训练跳格模型
tsf-lstm 在TensorFlow中对Text8数据训练LSTM字符模型

Theano-教程

笔记本电脑 描述
theano-intro Theano简介,它允许您高效地定义、优化和计算涉及多维数组的数学表达式。它可以使用GPU并执行高效的符号微分
theano-scan 学习扫描,这是一种在Theano图中执行循环的机制
theano-logistic 在Theano中实现Logistic回归
theano-rnn 递归神经网络在Theano中的实现
theano-mlp 在Theano中实现多层感知器

Keras-教程

笔记本电脑 描述
角膜 KERAS是一个用Python编写的开源神经网络库。它可以在TensorFlow或Theano上运行
setup 了解教程目标以及如何设置Kera环境
intro-deep-learning-ann 介绍使用KERAS和人工神经网络(ANN)进行深度学习
theano 通过使用权重矩阵和梯度了解Theano
keras-otto 通过观看卡格尔·奥托挑战赛了解凯拉斯
ann-mnist 基于KERAS的MNIST人工神经网络的简单实现
conv-nets 使用KERAS了解卷积神经网络(CNN)
conv-net-1 使用KERA识别MNIST中的手写数字-第1部分
conv-net-2 使用KERA识别MNIST中的手写数字-第2部分
keras-models 将预先培训的型号(如VGG16、VGG19、ResNet50和Inception v3)与KERA配合使用
auto-encoders 了解有关KERAS自动编码器的信息
rnn-lstm 使用KERAS了解递归神经网络(RNN)
lstm-sentence-gen 了解与KERA配合使用长短期内存(LSTM)网络的RNN

深度学习-其他

笔记本电脑 描述
deep-dream 基于Caffe的计算机视觉程序,使用卷积神经网络来查找和增强图像中的图案

科学工具包-学习

演示SCRICKIT学习功能的IPython笔记本

笔记本电脑 描述
intro 介绍笔记本到SCRICKIT-学习。Scikit-Learning添加了对大型多维数组和矩阵的Python支持,以及对这些数组进行操作的高级数学函数库的大型库
knn 在SCRICKIT-LEARN中实现k-近邻
linear-reg 在SCRICKIT-LEARCH中实现线性回归
svm 在SCRKIT-LEARN中实现带核和不带核的支持向量机分类器
random-forest 在SCRICKIT-LEARN中实现随机森林分类器和回归器
k-means 在SCRICIT-LEARN中实现k-均值聚类
pca 主成分分析在SCRICIT-LEARCH中的实现
gmm 在SCRICIT-LEARN中实现高斯混合模型
validation 在SCRICKIT-LEARN中实现验证和模型选择

统计推理法

演示使用SciPy功能进行统计推断的IPython笔记本

笔记本电脑 描述
尖刺的 SciPy是构建在Python的Numpy扩展上的数学算法和便利函数的集合。它为用户提供用于操作和可视化数据的高级命令和类,从而大大增强了交互式Python会话的功能
effect-size 通过分析男性和女性的身高差异,探索量化效应大小的统计数据。使用行为危险因素监测系统(BRFSS)的数据来估计美国成年女性和男性的平均身高和标准偏差
sampling 利用BRFSS数据分析美国男女平均体重探索随机抽样
hypothesis 通过分析头胎婴儿与其他婴儿的差异来探索假设检验

熊猫

演示熊猫功能的IPython笔记本

笔记本电脑 描述
pandas 用Python编写的用于数据操作和分析的软件库。提供用于操作数值表和时间序列的数据结构和操作
github-data-wrangling 通过分析中的GitHub数据,了解如何加载、清理、合并和要素工程Viz回购
Introduction-to-Pandas 熊猫简介
Introducing-Pandas-Objects 了解熊猫对象
Data Indexing and Selection 了解有关熊猫中的数据索引和选择的信息
Operations-in-Pandas 了解有关在熊猫中操作数据的信息
Missing-Values 了解有关处理熊猫中丢失的数据的信息
Hierarchical-Indexing 了解有关熊猫中的分层索引的信息
Concat-And-Append 了解有关组合数据集的信息:在熊猫中合并和追加
Merge-and-Join 了解有关组合数据集的信息:在熊猫中合并和连接
Aggregation-and-Grouping 了解有关在熊猫中聚合和分组的信息
Pivot-Tables 了解有关熊猫中的透视表的信息
Working-With-Strings 了解有关熊猫中的矢量化字符串操作的信息
Working-with-Time-Series 了解有关在熊猫中使用时间序列的信息
Performance-Eval-and-Query 了解高性能熊猫:熊猫中的eval()和query()

Matplotlib

演示matplotlib功能的IPython笔记本

笔记本电脑 描述
matplotlib Python 2D绘图库,以各种硬拷贝格式和跨平台交互环境生成出版物质量数据
matplotlib-applied 将matplotlib可视化应用于Kaggle比赛以进行探索性数据分析。了解如何创建条形图、直方图、子图2格网、归一化图、散点图、子图和核密度估计图
Introduction-To-Matplotlib Matplotlib简介
Simple-Line-Plots 了解有关Matplotlib中的简单线条图的信息
Simple-Scatter-Plots 了解有关Matplotlib中的简单散点图的信息
Errorbars.ipynb 了解有关在Matplotlib中可视化错误的信息
Density-and-Contour-Plots 了解Matplotlib中的密度和等高线绘图
Histograms-and-Binnings 了解有关Matplotlib中的直方图、二进制和密度的信息
Customizing-Legends 了解有关在Matplotlib中自定义地块图例的信息
Customizing-Colorbars 了解有关在Matplotlib中自定义色带的信息
Multiple-Subplots 了解有关Matplotlib中的多个子图的信息
Text-and-Annotation 了解有关Matplotlib中的文本和注记的信息
Customizing-Ticks 了解有关在Matplotlib中自定义刻度的信息
Settings-and-Stylesheets 了解有关自定义Matplotlib的信息:配置和样式表
Three-Dimensional-Plotting 了解有关在Matplotlib中进行三维打印的信息
Geographic-Data-With-Basemap 了解有关在Matplotlib中使用底图的地理数据的信息
Visualization-With-Seaborn 了解有关海运可视化的信息

麻木的

演示NumPy功能的IPython笔记本

笔记本电脑 描述
numpy 添加了对大型多维数组和矩阵的Python支持,以及对这些数组进行运算的大型高级数学函数库
Introduction-to-NumPy NumPy简介
Understanding-Data-Types 了解有关Python中的数据类型的信息
The-Basics-Of-NumPy-Arrays 了解NumPy阵列的基础知识
Computation-on-arrays-ufuncs 了解有关NumPy数组的计算:泛函
Computation-on-arrays-aggregates 了解有关聚合的信息:NumPy中的最小值、最大值以及介于两者之间的所有内容
Computation-on-arrays-broadcasting 了解有关数组计算的信息:在NumPy中广播
Boolean-Arrays-and-Masks 了解有关NumPy中的比较、掩码和布尔逻辑的信息
Fancy-Indexing 了解NumPy中的奇特索引
Sorting 了解有关在NumPy中对数组进行排序的信息
Structured-Data-NumPy 了解结构化数据:NumPy的结构化数组

Python-Data

IPython笔记本,演示面向数据分析的Python功能

笔记本电脑 描述
data structures 使用元组、列表、字典、集学习Python基础知识
data structure utilities 学习Python操作,如切片、范围、xrange、二等分、排序、排序、反转、枚举、压缩、列表理解
functions 了解更高级的Python功能:函数作为对象、lambda函数、闭包、*args、**kwargs curying、生成器、生成器表达式、itertools
datetime 了解如何使用Python日期和时间:datetime、strftime、strptime、timeDelta
logging 了解有关使用RotatingFileHandler和TimedRotatingFileHandler进行Python日志记录的信息
pdb 了解如何使用交互式源代码调试器在Python中进行调试
unit tests 了解如何在Python中使用NOSE单元测试进行测试

Kaggle-and-Business分析

中使用的IPython笔记本kaggle竞争和业务分析

笔记本电脑 描述
titanic 预测泰坦尼克号上的生还者。学习数据清理、探索性数据分析和机器学习
churn-analysis 预测客户流失。练习逻辑回归、梯度增强分类器、支持向量机、随机森林和k近邻。包括对念力矩阵、ROC图、特征重要性、预测概率和校准/识别的讨论

电光

演示电光和HDFS功能的IPython笔记本

笔记本电脑 描述
spark 内存集群计算框架,对于某些应用程序速度最高可提高100倍,并且非常适合机器学习算法
hdfs 在大型群集中跨计算机可靠地存储非常大的文件

MapReduce-Python

演示使用mrjob功能的Hadoop MapReduce的IPython笔记本

笔记本电脑 描述
mapreduce-python 在Python中运行MapReduce作业,在本地或Hadoop群集上执行作业。演示Python代码中的Hadoop流以及单元测试和mrjob用于分析Elastic MapReduce上的Amazon S3存储桶日志的配置文件。Disco是另一个基于python的替代方案。

AWS

演示Amazon Web服务(AWS)和AWS工具功能的IPython笔记本

另请查看:

  • SAWS:增强型AWS命令行界面(CLI)
  • Awesome AWS:库、开源Repos、指南、博客和其他资源的精选列表
笔记本电脑 描述
boto 针对Python的官方AWS SDK
s3cmd 通过命令行与S3交互
s3distcp 组合较小的文件,并通过接受模式和目标文件将它们聚合在一起。S3DistCp还可用于将大量数据从S3传输到您的Hadoop群集
s3-parallel-put 将多个文件并行上传到S3
redshift 充当建立在大规模并行处理(MPP)技术之上的快速数据仓库
kinesis 通过每秒处理数千个数据流的能力实时流式传输数据
lambda 运行代码以响应事件,自动管理计算资源

命令

IPython笔记本,演示Linux、Git等的各种命令行

笔记本电脑 描述
linux 类UNIX且大多兼容POSIX的计算机操作系统。磁盘使用情况、拆分文件、grep、sed、curl、查看正在运行的进程、终端语法突出显示和Vim
anaconda 发布用于大规模数据处理、预测分析和科学计算的Python编程语言,旨在简化包管理和部署
ipython notebook 基于Web的交互式计算环境,您可以在其中将代码执行、文本、数学、绘图和富媒体组合到单个文档中
git 强调速度、数据完整性并支持分布式非线性工作流的分布式修订控制系统
ruby 用于与AWS命令行和Jekyll交互,Jekyll是可托管在GitHub页面上的博客框架
jekyll 简单、支持博客的静电站点生成器,适用于个人、项目或组织站点。呈现Markdown或Textile and Liquid模板,并生成一个完整的静电网站,准备好由Apache HTTP Server、NGINX或其他Web服务器提供服务
pelican 基于Python的Jekyll替代方案
django 高级Python Web框架,鼓励快速开发和干净、实用的设计。它对共享报告/分析和博客很有用。较轻的替代方案包括PyramidFlaskTornado,以及Bottle

杂项

演示各种功能的IPython笔记本

笔记本电脑 描述
regex 数据争论中有用的正则表达式小抄
algorithmia Algorithmia是一个算法市场。本笔记本展示了4种不同的算法:人脸检测、内容摘要、潜在狄利克雷分配和光学字符识别

笔记本-安装

python

Anaconda是Python编程语言的免费发行版,用于大规模数据处理、预测分析和科学计算,旨在简化包管理和部署

按照说明进行安装Anaconda或者更轻的miniconda

设备-设置

有关设置数据分析开发环境的详细说明、脚本和工具,请参阅dev-setup回购

跑步-笔记本

要查看交互式内容或修改IPython笔记本中的元素,必须首先克隆或下载存储库,然后再运行笔记本。有关IPython笔记本的更多信息可以找到here.

$ git clone https://github.com/donnemartin/data-science-ipython-notebooks.git
$ cd data-science-ipython-notebooks
$ jupyter notebook

使用Python 2.7.x测试的笔记本电脑

学分

贡献

欢迎投稿!有关错误报告或请求,请submit an issue

联系方式-信息

请随时与我联系,讨论任何问题、问题或评论

许可证

这个存储库包含各种内容;有些是由Donne Martin开发的,有些是来自第三方的。第三方内容在这些方提供的许可下分发

由Donne Martin开发的内容按照以下许可证分发:

我在开放源码许可下向您提供此存储库中的代码和资源。因为这是我的个人存储库,您获得的我的代码和资源的许可证来自我,而不是我的雇主(Facebook)

Copyright 2015 Donne Martin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Handson-ml-Jupyter 引导您学习机器学习和深度学习的基础知识

Handson-ml-Jupyter 使用Scikit-Learning和TensorFlow在Python中引导您学习机器学习和深度学习的基础知识。

机器学习笔记本

本项目旨在教您Python中机器学习的基础知识。它包含我的O‘Reilly书中练习的示例代码和解决方案Hands-on Machine Learning with Scikit-Learn and TensorFlow

警告:这本书现在有一个较新的版本,请查收github.com/ageron/handson-ml2

快速入门

想在不安装任何东西的情况下在线玩这些笔记本吗?

使用以下任一服务

警告:请注意,这些服务提供临时环境:您所做的任何操作都将在一段时间后被删除,因此请确保下载您关心的任何数据

  • 推荐:在以下位置打开此存储库Colaboratory
  • 或在中打开它Binder
    • 注意事项:大多数情况下,Binder启动速度很快,工作效果很好,但是当handson-ml更新时,Binder会从头开始创建一个新环境,这可能需要相当长的时间
  • 或在中打开它Deepnote

只想快速浏览一些笔记本,而不执行任何代码?

使用浏览此存储库jupyter.org’s notebook viewer

注意事项github.com’s notebook viewer也可以工作,但速度较慢,并且数学公式并不总是正确显示

要使用Docker映像运行此项目吗?

请阅读Docker instructions

要在您自己的计算机上安装此项目吗?

从安装开始Anaconda(或Miniconda),git,如果您有兼容TensorFlow的GPU,请安装GPU driver,以及相应版本的CUDA和cuDNN(有关详细信息,请参阅TensorFlow的文档)

接下来,通过打开终端并键入以下命令(不要键入第一个命令)来克隆此项目$每行上的符号仅表示这些是终端命令):

$ git clone https://github.com/ageron/handson-ml.git
$ cd handson-ml

接下来,运行以下命令:

$ conda env create -f environment.yml
$ conda activate tf1
$ python -m ipykernel install --user --name=python3

最后,启动Jupyter:

$ jupyter notebook

如果您需要进一步的说明,请阅读detailed installation instructions

常见问题解答

我应该使用哪个Python版本?

我推荐Python3.7。如果您按照上面的安装说明操作,您将获得该版本。大多数代码都可以与其他版本的Python3一起使用,但有些库还不支持Python3.8或3.9,这就是我推荐Python3.7的原因

当我调用时收到错误消息load_housing_data()

一定要给我打电话fetch_housing_data()在此之前你打电话给我load_housing_data()如果您收到HTTP错误,请确保您运行的代码与笔记本中的代码完全相同(如果需要,请复制/粘贴)。如果问题仍然存在,请检查您的网络配置

我在MacOSX上收到SSL错误

您可能需要安装SSL证书(请参阅此处StackOverflow question)。如果您从官方网站下载了Python,则运行/Applications/Python\ 3.7/Install\ Certificates.command在终端中(更改3.7到您安装的任何版本)。如果使用MacPorts安装Python,请运行sudo port install curl-ca-bundle在终端中

我已经在本地安装了这个项目。如何将其更新到最新版本?

看见INSTALL.md

在使用python时,如何将我的Python库更新到最新版本?

看见INSTALL.md

贡献者

我要感谢所有人who contributed to this project,通过提供有用的反馈、提交问题或提交拉取请求。特别感谢海森·帕克和伊恩·博雷德,他们审阅了每个笔记本,并提交了许多公关,包括在一些练习解决方案上的帮助。还要感谢史蒂文·邦克利和齐恩布拉,他们创造了docker目录,并感谢GitHub用户SuperYorio,他在一些运动解决方案上提供了帮助

D2l-zh 动手学深度学习

本开源项目代表了我们的一种尝试:我们将教给读者概念、背景知识和代码;我们将在同一个地方阐述剖析问题所需的批判性思维、解决问题所需的数学知识,以及实现解决方案所需的工程技能.

我们的目标是创建一个为实现以下目标的统一资源:

  1. 所有人均可在网上免费获取;
  2. 提供足够的技术深度,从而帮助读者实际成为深度学习应用科学家:既理解数学原理,又能够实现并不断改进方法;
  3. 包含可运行的代码,为读者展示如何在实际中解决问题.这样不仅直接将数学公式对应成实际代码,而且可以修改代码、观察结果并及时获取经验;
  4. 允许我们和整个社区不断快速迭代内容,从而紧跟仍在高速发展的深度学习领域;
  5. 由包含有关技术细节问答的论坛作为补充,使大家可以相互答疑并交换经验.
将本书(中英文版)用作教材或参考书的大学

如果本书对你有帮助,请星空(★)本仓库或引用本书的英文版:

@article{zhang2021dive,
    title={Dive into Deep Learning},
    author={Zhang, Aston and Lipton, Zachary C. and Li, Mu and Smola, Alexander J.},
    journal={arXiv preprint arXiv:2106.11342},
    year={2021}
}

本书的第二版

虽然纸质书第一版已经出版,但深度学习领域依然在迅速发展.为了得到来自更广泛的英文开源社区的帮助,从而提升本书质量,本书的第二版正在用英文写.英文版正不断被搬回中文版中.

目前,英文版已超过160节(中文版共96节),例如增加了理论背景(如优化收敛分析)、硬件设计(如参数服务器)、全新篇章(如注意力机制、推荐系统、深度学习的数学、生成对抗网络)、应用种类(如自然语言推理)、模型种类(如变压器、BERT)等,并优化重组了大量章节(如将自然语言处理篇章按从预训练表征、到模型设计、再到下游应用重构)。

欢迎关注本书第二版的英文开源项目

中英文教学资源

加州大学伯克利分校2019年年春学期Introduction to Deep Learning 课程教材(同时提供含教学视频地址的中文版课件).

学术界推荐

“如果你想深入学习,那就看看这本书吧!”

-韩家炜,acm院士、ieee院士,美国伊利诺伊大学香槟分校计算机系Michael Aiken主席教授

“这对机器学习文献来说是一个非常受欢迎的补充。”

–Bernhard Schölkopf,acm院士、德国国家科学院院士,德国马克斯·普朗克研究所智能系统院院长

“书中代码可谓‘所学即所用’。”

-周志华,acm院士、ieee院士、aaas院士,南京大学计算机科学与技术系主任

“这本书可以帮助深度学习实践者快速提升自己的能力”

-张潼,asa院士、ims院士,香港科技大学计算机系和数学系教授

工业界推荐

“一本优秀的深度学习教材,值得任何想了解深度学习何以引爆人工智能革命的人关注”

-黄仁勋,NVIDIA创始人兼首席执行官

“”动手学深度学习“是最适合工业界研发工程师学习的.我毫无保留地向广大的读者们强烈推荐。”

-余凯,地平线公司创始人&首席执行官

“强烈推荐这本书!我特别赞赏这种手脑一体的学习方式”

-漆远,蚂蚁金服副总裁、首席AI科学家

“”动手学深度学习“是一本很容易让学习者上瘾的书。”

–沈强,将门创投创始合伙人

贡献

感谢社区贡献者们为每一位读者改进这本开源书.

如何贡献|致谢|讨论或报告问题|其他

MadeWithML 了解如何通过ML负责任地交付产品

基础知识

通过直观的解释、干净的代码和可视化学习ML的基础

🔢三个基金会 📈数据建模 🤖*深度学习
Notebooks Linear Regression CNNs
Python Logistic Regression Embeddings
NumPy Neural Network RNNs
Pandas Data Quality Transformers
PyTorch Utilities

📆更多话题即将到来!
Subscribe查看我们每月更新的新内容

MLOPS

了解如何应用ML来构建生产级产品以交付价值

📦新产品 📝使用脚本编写 ♻️*可重现性
Objective Organization Git
Solution Packaging Pre-commit
Iteration Documentation Versioning
🔢三个数据 Styling Docker
Labeling Makefile 🚀三个产品的生产
Preprocessing Logging Dashboard
Exploratory data analysis 📦3个接口 CI/CD workflows
Splitting Command-line Infrastructure
Augmentation RESTful API Monitoring
📈数据建模 ✅测试结果: Pipelines
Evaluation Code Feature store
Experiment tracking Data
Optimization Models

📆每个月都有新的课程!
Subscribe查看我们每月更新的新内容

常见问题解答

这个内容是为谁准备的?

  • Software engineers希望学习ML并成为更好的软件工程师
  • Data scientists谁想了解如何通过ML负责任地交付价值
  • College graduates希望学习该行业所需的实用技能
  • Product Managers谁想为ML应用程序开发技术基础

它的结构是什么?

课程将每周发布一次,每节课程包括:

  • intuition:将涵盖的概念及其如何组合在一起的高级概述
  • code:说明概念的简单代码示例
  • application:将概念应用于我们的具体任务
  • extensions:简要介绍适用于不同情况的其他工具和技术

是什么让这个内容独一无二的呢?

  • hands-on:如果您在线搜索Production ML或MLOps,您会找到很棒的博客帖子和tweet。但是为了真正理解这些概念,您需要实现它们。不幸的是,由于规模、专有内容和昂贵的工具,您没有看到很多运行Production ML的内部工作原理。然而,Made with ML是免费的、开放的和活生生的,这使得它成为社区完美的学习机会
  • intuition-first:我们永远不会直接跳到代码上去。在每节课中,我们都会培养对概念的直觉,并从产品的角度来思考。
  • software engineering:本课程不只是关于ML。事实上,它主要是关于干净的软件工程!我们将介绍一些重要的概念,如版本控制、测试、日志记录等,它们可以真正成为生产级产品
  • focused yet holistic:对于每个概念,我们不仅会介绍对我们的特定任务最重要的内容(这是案例研究方面),而且还会介绍相关的方法(这是指导方面),这些方法在其他情况下可能会被证明是有用的

作者是谁?

  • 我在苹果公司部署了大规模ML系统,也在初创公司部署了受约束的较小系统,我想与大家分享我学到的共同原则
  • 与我保持联系TwitterLinkedIn

为什么这个是免费的?

虽然这个内容是为每个人准备的,但它特别针对那些没有太多学习机会的人。我相信创造力和智慧是随机分布的,而机会是孤立的。我想让更多的人创造并为创新做出贡献


要引用此内容,请使用:

@misc{madewithml,
    title  = "Made With ML",
    author = "Goku Mohandas",
    url    = "https://madewithml.com/"
    year   = "2021",
}

Real-Time-Voice-Cloning 5秒内克隆语音,实时生成任意语音

实时语音克隆

此存储库是Transfer Learning from Speaker Verification to
Multispeaker Text-To-Speech Synthesis
(SV2TTS),具有实时工作的声码器。请随时查看my thesis如果你很好奇,或者你在找我没有记录的信息。大多数情况下,我建议快速浏览一下导言之外的数字。

SV2TTS是一个三阶段深度学习框架,它允许从几秒钟的音频创建语音的数字表示,并使用它来调整文本到语音的模型,该模型经过训练以概括为新的语音

视频演示(点击图片):

已实施的文件

URL 指定 标题 实施来源
1806.04558 SV2TTS 从说话人确认到多说话人文语合成的转移学习 此回购
1802.08435 WaveRNN(声码器) 高效的神经音频合成 fatchord/WaveRNN
1703.10135 泰科加速器(合成器) Taco tron:走向端到端语音合成 fatchord/WaveRNN
1710.10467 GE2E(编码器) 说话人确认的广义端到端损耗 此回购

新闻

14/02/21:这个回购现在运行在PyTorch上,而不是TensorFlow上,这要归功于@Bluefish的帮助。如果希望改为运行TensorFlow版本,请签出提交5425557

13/11/19:我现在是全职工作,我不会再维持这个回购了。致任何阅读此文的人:

  • 如果你只想克隆你的声音(而不是别人的):我推荐我们的免费计划Resemble.AI你会得到更好的音质和更少的韵律错误
  • 如果这不是您的情况:继续使用此存储库,但您可能最终会对结果感到失望。如果你计划做一个严肃的项目,我的强烈建议是:另找一个TTS回收站。去here了解更多信息

20/08/19:我正在努力resemblyzer,一个独立的语音编码器软件包。您可以使用此回收站中经过训练的编码器型号与其配合使用

06/07/19:需要在远程服务器上的坞站容器中运行吗?看见here

25/06/19:为合成器增加了对低内存GPU(~2 GB)的实验支持。经过--low_memdemo_cli.pydemo_toolbox.py来启用它。这会增加很大的开销,因此如果您有足够的VRAM,则不建议使用

设置

1.安装要求

Python 3.6或3.7运行工具箱所需的

  • 安装PyTorch(>=1.0.1)
  • 安装ffmpeg
  • pip install -r requirements.txt要安装剩余的必要软件包,请执行以下操作

2.下载预先训练好的模型

下载最新版本here

3.(可选)测试配置

在下载任何数据集之前,您可以通过以下方式开始测试配置:

python demo_cli.py

如果所有测试都通过了,你就可以走了

4.(可选)下载数据集

对于单独使用工具箱,我只推荐下载LibriSpeech/train-clean-100将内容提取为<datasets_root>/LibriSpeech/train-clean-100哪里<datasets_root>是您选择的目录。工具箱中支持其他数据集,请参阅here您可以不下载任何数据集,但是您需要将您自己的数据作为音频文件,否则您必须使用工具箱进行记录

5.启动工具箱

然后,您可以尝试该工具箱:

python demo_toolbox.py -d <datasets_root>

python demo_toolbox.py

取决于您是否下载了任何数据集。如果您正在运行X服务器或出现错误Aborted (core dumped),请参见this issue

100-Days-Of-ML-Code-100天的ML编码

ML-100天代码

100天机器学习 Siraj Raval

获取数据集: here

数据预处理|第1天

从以下位置签出代码: here

简单线性回归|第2天

从以下位置签出代码here

多元线性回归|第3天

从以下位置签出代码here

Logistic回归|第4天

Logistic回归|第5天

今天进入#100DaysOfMLCode,我更深入地研究了Logistic回归到底是什么,以及它背后涉及的数学知识是什么。学习了成本函数的计算方法,以及如何将梯度下降算法应用于成本函数,使预测误差最小化
由于时间不多,我现在会隔天贴一张信息图。此外,如果有人想要帮助我编写代码文档,并且已经在该领域有一些经验,并且知道GitHub的Markdown,请在LinkedIn上与我联系:)

实施Logistic回归|第6天

查看代码here

K个最近的邻居|第7天

Logistic回归背后的数学|第8天

#100DaysOfMLCode为了阐明我对逻辑回归的见解我在互联网上搜索了一些资源或文章,我偶然看到了这篇文章(https://towardsdatascience.com/logistic-regression-detailed-overview-46c4da4303bc)Saishruthi Swminathan著

对Logistic回归进行了详细的描述。一定要检查一下

支持向量机|第9天

对支持向量机是什么以及如何使用它来解决分类问题有了一个直观的了解

支持向量机和KNN|第10天

了解有关支持向量机的工作原理和实现K-NN算法的详细信息

K-NN实施|第11天

实现了K-NN分类算法。#100DaysOfMLCode支持向量机信息图已完成一半。明天会更新的

支持向量机|第12天

朴素贝叶斯分类器|第13天

今天继续讨论#100DaysOfMLCode,我介绍了朴素贝叶斯分类器。我还使用SCISKIT-LEARN在python中实现了支持向量机。将很快更新代码

支持向量机实施|第14天

今天我在线性相关的数据上实现了支持向量机。二手Scikit学习图书馆。在Scikit-Learning中,我们使用SVC分类器来完成这项任务。将在下一次实现中使用内核技巧。检查代码here

朴素贝叶斯分类器和黑盒机器学习|第15天

学习了不同类型的朴素贝叶斯分类器。也是通过以下方式开始讲课的Bloomberg播放列表中的第一个是黑盒机器学习。对预测函数、特征提取、学习算法、性能评估、交叉验证、样本偏差、非平稳性、过拟合和超参数调整等方面进行了全面的综述

使用内核技巧实现支持向量机|第16天

利用Scikit-Learning库实现了支持向量机算法,并利用核函数将数据点映射到更高的维来寻找最优超平面

在Coursera|第17天开始深度学习专业化认证

在一天内完成整个第一周和第二周。学习Logistic回归作为神经网络

Coursera上的深度学习专业化认证|第18天

完成深度学习专业化课程1。用python实现了一个神经网络。

“学习问题”,亚瑟·阿布-穆斯塔法教授(Yaser Abu-Mostafa)|第19天

开始了加州理工学院机器学习课程(CS156)第18讲中的第1讲,由Yaser Abu-Mostafa教授主讲。这基本上是对即将到来的讲座的介绍。他还解释了感知器算法

开始深度学习专业化认证课程2|第20天

完成了改进深度神经网络的第一周:超参数调整、正则化和优化

Web抓取|第21天

观看了有关如何使用美丽汤进行Web抓取的教程,以便为构建模型收集数据

学习可行吗?|第22天

加州理工学院机器学习课程(CS156)第18讲第2讲,亚瑟·阿布-穆斯塔法教授主讲。了解Hoeffding不等式

诊断树|第23天

统计学习理论简介|第24天

Bloomberg ML课程的LEC3介绍了一些核心概念,如输入空间、动作空间、结果空间、预测函数、损失函数和假设空间

实施决策树|第25天

检查代码here.

跳过复习线性代数|第26天

发现了一个令人惊叹的channel在YouTube3Blue1Brown上。它有一个名为“线性代数精髓”的播放列表。从完成4个视频开始,这些视频完整地概述了向量、线性组合、跨度、基向量、线性变换和矩阵乘法

链接到播放列表here.

跳过复习线性代数|第27天

继续播放已完成的4个视频,讨论主题3D变换、行列式、逆矩阵、列空间、零空间和非平方矩阵

链接到播放列表here.

跳过复习线性代数|第28天

在3Blue1Brown的播放列表中,完成了另外3个来自线性代数本质的视频。涵盖的主题是点积和交积

链接到播放列表here.

跳过复习线性代数|第29天

今天完成了整个播放列表,视频12-14。这真是一个令人惊叹的播放列表,可以刷新线性代数的概念。主题包括基数、特征向量和特征值的变化,以及抽象向量空间

链接到播放列表here.

微积分精髓|第30天

由3Blue1Brown完成播放列表-线性代数的精髓,这是YouTube针对同一频道3Blue1Brown再次出现的一系列视频提出的建议。上一个线性代数系列已经给我留下了深刻的印象,我直接投入其中。完成了关于导数、链式规则、乘积规则和指数导数等主题的约5个视频

链接到播放列表here.

微积分精髓|第31天

观看了2个关于微积分播放列表实质的主题隐含区分和限制的视频

链接到播放列表here.

微积分精髓|第32天

观看了剩余的4个视频,涵盖了积分和高阶导数等主题

链接到播放列表here.

随机森林|第33天

实施随机林|第34天

检查代码here.

但是什么呢?神经网络?|深度学习,第1章|第35天

由3Blue1Brown YouTube频道在神经网络上发布的令人惊叹的视频。本视频对神经网络有很好的理解,并使用手写数字数据集来解释概念。链接到video.

梯度下降,神经网络如何学习|深度学习,第2章|第36天

第二部分神经网络由3Blue1Brown YouTube频道提供。这个视频以一种有趣的方式解释了渐变下降的概念。169必看,强烈推荐。链接到video.

反向传播到底在做什么?|深度学习,第3章|第37天

第三部分神经网络由3Blue1Brown YouTube频道提供。这个视频主要讨论偏导数和反向传播。链接到video.

反向传播演算|深度学习,第4章|第38天

第四部分神经网络由3Blue1Brown YouTube频道提供。这里的目标是用一些更正式的术语来表示反向传播如何工作的直觉,以及视频中讨论偏导数和反向传播的视频。链接到video.

使用Python、TensorFlow和Kera进行深度学习教程|第39天

链接到video.

加载您自己的数据-使用Python、TensorFlow和Kera的深度学习基础知识p2|第40天

链接到video.

卷积神经网络-使用Python、TensorFlow和Kera的深度学习基础第3页|第41天

链接到video.

使用TensorBoard分析模型-使用Python、TensorFlow和Kera进行深度学习第4页|第42天

链接到video.

K表示群集|第43天

转向无监督学习,研究了聚类问题。在我的网站上工作,检查一下avikjain.me我还发现了一个很棒的动画,可以帮助您轻松理解K-Means聚类Link

K表示群集实施|第44天

实现了K均值聚类。检查代码here.

深入挖掘|NUMPY|第45天

我买了一本JK Vanderplas的新书《Python数据科学手册》Check the Jupyter Notebookhere.

从第2章:Numpy简介开始。介绍了数据类型、Numpy数组和Numpy数组上的计算等主题
检查代码-
Introduction to NumPy

Understanding Data Types in Python

The Basics of NumPy Arrays

Computation on NumPy Arrays: Universal Functions

深入挖掘|NUMPY|第46天

第二章:汇总、比较和广播
链接到笔记本电脑:
Aggregations: Min, Max, and Everything In Between

Computation on Arrays: Broadcasting

Comparisons, Masks, and Boolean Logic

深入挖掘|NUMPY|第47天

第2章:奇特索引、排序数组、结构化数据
链接到笔记本电脑:
Fancy Indexing

Sorting Arrays

Structured Data: NumPy’s Structured Arrays

更深入地挖掘|熊猫|第48天

第3章:使用熊猫进行数据操作
涵盖了各种主题,如Pandas对象、数据索引和选择、对数据的操作、处理丢失的数据、分层索引、合并和追加
指向笔记本的链接:
Data Manipulation with Pandas

Introducing Pandas Objects

Data Indexing and Selection

Operating on Data in Pandas

Handling Missing Data

Hierarchical Indexing

Combining Datasets: Concat and Append

更深地挖掘|熊猫|第49天

第3章:完成以下主题-合并和联接、聚合和分组以及透视表
Combining Datasets: Merge and Join

Aggregation and Grouping

Pivot Tables

更深入地挖掘|熊猫|第50天

第3章:矢量化字符串运算,使用时间序列
指向笔记本的链接:
Vectorized String Operations

Working with Time Series

High-Performance Pandas: eval() and query()

深挖|MATPLOTLIB|第51天

第4章:使用Matplotlib实现可视化学习简单线图、简单散点图、密度图和等高线图
指向笔记本的链接:
Visualization with Matplotlib

Simple Line Plots

Simple Scatter Plots

Visualizing Errors

Density and Contour Plots

深入挖掘|MATPLOTLIB|第52天

第4章:使用Matplotlib实现可视化学习了直方图、如何自定义绘图图例、颜色条和构建多个子图表
指向笔记本的链接:
Histograms, Binnings, and Density

Customizing Plot Legends

Customizing Colorbars

Multiple Subplots

Text and Annotation

深挖|MATPLOTLIB|第53天

第四章介绍了Mathplotlib中的三维绘图
指向笔记本的链接:
Three-Dimensional Plotting in Matplotlib

分层群集|第54天

对层次聚类进行了研究。看看这个令人惊叹的Visualization.

TensorFlow-Examples-TensorFlow初学者教程和示例(支持TF v1和v2)

TensorFlow示例

本教程旨在通过示例轻松深入TensorFlow。为了可读性,它包括笔记本和带有说明的源代码,适用于TFv1和v2

它适合那些想要找到关于TensorFlow的清晰简明示例的初学者。除了传统的“原始”TensorFlow实现之外,您还可以找到最新的TensorFlow API实践(例如layersestimatordataset、.)

更新(05/16/2020):将所有默认示例移动到TF2。对于TF v1示例:check here

教程索引

0-必备条件

1-简介

  • 你好,世界(notebook)。非常简单的示例,学习如何使用TensorFlow2.0+打印“hello world”
  • 基本操作(notebook)。一个涵盖TensorFlow 2.0+基本操作的简单示例

2-基本型号

  • 线性回归(notebook)。用TensorFlow 2.0+实现线性回归
  • Logistic回归(notebook)。用TensorFlow 2.0+实现Logistic回归
  • word2vec(单词嵌入)(notebook)。使用TensorFlow 2.0+从维基百科数据构建单词嵌入模型(Word2vec)
  • GBDT(梯度增强决策树)(notebooks)。使用TensorFlow 2.0+实现梯度增强决策树,以使用波士顿住房数据集预测房价

3-神经网络

受监督
  • 简单神经网络(notebook)。使用TensorFlow 2.0‘Layers’和‘Model’API构建一个简单的神经网络来对MNIST数字数据集进行分类
  • 简单神经网络(低级)(notebook)。MNIST数字数据集分类的简单神经网络RAW实现
  • 卷积神经网络(notebook)。使用TensorFlow 2.0+“Layers”和“model”API构建卷积神经网络对MNIST数字数据集进行分类
  • 卷积神经网络(低级)(notebook)。卷积神经网络对MNIST数字数据集分类的原始实现
  • 递归神经网络(LSTM)(notebook)。利用TensorFlow 2.0‘Layers’和‘Model’API构建递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 双向递归神经网络(LSTM)(notebook)。利用TensorFlow 2.0+‘Layers’和‘Model’API构建双向递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 动态递归神经网络(LSTM)(notebook)。使用TensorFlow 2.0+‘Layers’和‘Model’API构建一个执行动态计算的递归神经网络(LSTM),对可变长度的序列进行分类
无人监督
  • 自动编码器(notebook)。构建一个自动编码器,将图像编码到较低的维度并重建它
  • DCGAN(深度卷积生成对抗网络)(notebook)。构建深度卷积生成对抗网络(DCGAN)从噪声中生成图像

4-实用程序

  • 保存和恢复模型(notebook)。使用TensorFlow 2.0+保存和恢复模型
  • 构建自定义图层和模块(notebook)。了解如何构建自己的层/模块并将其集成到TensorFlow 2.0+模型中
  • 电路板(notebook)。使用TensorFlow 2.0+Ttensorboard跟踪和可视化神经网络计算图形、指标、权重等

5-数据管理

  • 加载和解析数据(notebook)。使用TensorFlow 2.0(Numpy阵列、图像、CSV文件、自定义数据)构建高效的数据管道。
  • 生成并加载TFRecords(notebook)。将数据转换为TFRecords格式,并使用TensorFlow 2.0+进行加载
  • 图像变换(即图像放大)(notebook)。使用TensorFlow 2.0+应用各种图像增强技术,生成用于训练的失真图像

6-硬件

  • 多GPU培训(notebook)。在CIFAR-10数据集上用多GPU训练卷积神经网络

TensorFlow v1

此处提供了TF v1的教程索引:TensorFlow v1.15 Examples或参见下面的示例列表

数据集

某些示例需要MNIST数据集来进行训练和测试。别担心,运行示例时会自动下载此数据集。MNIST是一个手写数字数据库,要快速描述该数据集,您可以查看this notebook

官网:http://yann.lecun.com/exdb/mnist/

安装

要下载所有示例,只需克隆此存储库:

git clone https://github.com/aymericdamien/TensorFlow-Examples

要运行它们,您还需要最新版本的TensorFlow。要安装它,请执行以下操作:

pip install tensorflow

或者(有GPU支持):

pip install tensorflow_gpu

有关TensorFlow安装的更多详细信息,可以查看TensorFlow Installation Guide

TensorFlow v1示例-索引

此处提供了TF v1的教程索引:TensorFlow v1.15 Examples

0-必备条件

1-简介

  • 你好,世界(notebook)(code)。学习如何使用TensorFlow打印“hello world”的非常简单的示例
  • 基本操作(notebook)(code)。介绍TensorFlow基本操作的简单示例
  • TensorFlow急切API基础知识(notebook)(code)。开始使用TensorFlow急切的API

2-基本型号

  • 线性回归(notebook)(code)。用TensorFlow实现线性回归
  • 线性回归(EAGER API)(notebook)(code)。使用TensorFlow的Eager API实现线性回归
  • Logistic回归(notebook)(code)。用TensorFlow实现Logistic回归
  • Logistic回归(EAGER API)(notebook)(code)。使用TensorFlow的Eager API实现Logistic回归
  • 最近邻居(notebook)(code)。用TensorFlow实现最近邻算法
  • K-均值(notebook)(code)。用TensorFlow构建K-Means分类器
  • 随机森林(notebook)(code)。用TensorFlow构建随机森林分类器
  • 梯度增强决策树(GBDT)(notebook)(code)。用TensorFlow构建梯度增强决策树(GBDT)
  • word2vec(单词嵌入)(notebook)(code)。使用TensorFlow从维基百科数据构建单词嵌入模型(word2vec

3-神经网络

受监督
  • 简单神经网络(notebook)(code)。建立一个简单的神经网络(也称为多层感知器)来对MNIST数字数据集进行分类。原始TensorFlow实现
  • 简单神经网络(tf.layer/估计器API)(notebook)(code)。使用TensorFlow‘Layers’和‘Estiator’API构建一个简单的神经网络(也称为多层感知器)来对MNIST数字数据集进行分类
  • 简单神经网络(EAGER API)(notebook)(code)。使用TensorFlow EAGER API构建简单的神经网络(也称为多层感知器)对MNIST数字数据集进行分类
  • 卷积神经网络(notebook)(code)。构建卷积神经网络对MNIST数字数据集进行分类。原始TensorFlow实现
  • 卷积神经网络(tf.layer/估计器API)(notebook)(code)。使用TensorFlow‘Layers’和‘Estiator’API构建卷积神经网络对MNIST数字数据集进行分类
  • 递归神经网络(LSTM)(notebook)(code)。构建递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 双向递归神经网络(LSTM)(notebook)(code)。构建双向递归神经网络(LSTM)对MNIST数字数据集进行分类
  • 动态递归神经网络(LSTM)(notebook)(code)。建立递归神经网络(LSTM)进行动态计算,对不同长度的序列进行分类
无人监督
  • 自动编码器(notebook)(code)。构建一个自动编码器,将图像编码到较低的维度并重建它
  • 变分自动编码器(notebook)(code)。构建一个变分自动编码器(VAE),对噪声进行编码并生成图像
  • 生成性对抗性网络(GAN)(notebook)(code)。构建生成性对抗网络(GAN),从噪声中生成图像
  • DCGAN(深度卷积生成对抗网络)(notebook)(code)。构建深度卷积生成对抗网络(DCGAN)从噪声中生成图像

4-实用程序

  • 保存和恢复模型(notebook)(code)。使用TensorFlow保存和恢复模型
  • Tensorboard-图形和损耗可视化(notebook)(code)。使用Tensorboard可视化计算图形并绘制损耗
  • 触摸板-高级可视化(notebook)(code)。深入Tensorboard;可视化变量、渐变等

5-数据管理

  • 构建图像数据集(notebook)(code)。使用TensorFlow数据队列从图像文件夹或数据集文件构建您自己的图像数据集
  • TensorFlow数据集API(notebook)(code)。引入TensorFlow数据集API优化输入数据管道
  • 加载和解析数据(notebook)。构建高效的数据管道(Numpy数组、图像、CSV文件、自定义数据等)
  • 生成并加载TFRecords(notebook)。将数据转换为TFRecords格式,并加载
  • 图像变换(即图像放大)(notebook)。应用各种图像增强技术,生成用于训练的失真图像

6-多GPU

  • 多GPU上的基本操作(notebook)(code)。在TensorFlow中引入多GPU的一个简单示例
  • 在多GPU上训练神经网络(notebook)(code)。一种简单明了的TensorFlow在多GPU上训练卷积神经网络的实现

更多例子

以下示例来自TFLearn,一个为TensorFlow提供简化接口的库。你可以看看,有很多examplespre-built operations and layers

教程

  • TFLearn Quickstart通过一个具体的机器学习任务学习TFLearn的基础知识。构建和训练深度神经网络分类器

示例

Pytorch-强GPU加速的Python中的张量和动态神经网络

PyTorch是一个Python软件包,提供了两个高级功能。

张量计算(如NumPy),具有强大的GPU加速能力,建立在基于磁带的autograd系统上的深度神经网络,在需要的时候,你可以重复使用你最喜欢的Python包,如NumPy、SciPy和Cython,来扩展PyTorch。

系统 3.6 3.7 3.8
Linux CPU
Linux GPU
Windows CPU/GPU
Linux(Ppc64le)CPU
Linux(Ppc64le)GPU
Linux(Aarch64)CPU

另请参阅ci.pytorch.org HUD

更多关于PyTorch的信息

在粒度级别上,PyTorch是一个由以下组件组成的库:

组件 描述
火炬 像NumPy这样的张量器库,具有强大的GPU支持
torch.autograd 基于磁带的自动区分库,支持TORCH中的所有可微分张量操作
torch.jit 从PyTorch代码创建可序列化和可优化模型的编译堆栈(TorchScript)
torch.nn 与Autograd深度集成的神经网络库,旨在实现最大的灵活性
torch.multiprocessing Python多处理,但具有跨进程共享火炬张量的神奇内存。适用于数据加载和HogWild培训
torch.utils 为方便起见,DataLoader和其他实用程序功能

通常,PyTorch用作以下任一用途:

  • 替代NumPy使用GPU的功能
  • 提供最大灵活性和速度的深度学习研究平台

进一步阐述:

一种支持GPU的张量库

如果您使用NumPy,则您使用的是张量(也称为(Ndarray)

PyTorch提供的张量既可以在CPU上运行,也可以在GPU上运行,从而将计算速度大幅提高

我们提供各种各样的张量例程来加速和满足您的科学计算需求,例如切片、索引、数学运算、线性代数、约简。而且他们跑得很快!

动态神经网络:基于磁带的自动评分

PyTorch有一种构建神经网络的独特方式:使用和重放磁带录音机

大多数框架,如TensorFlow、Theano、Caffe和CNTK都有静电的世界观。人们必须建立一个神经网络,并一次又一次地重复使用相同的结构。改变网络的行为方式意味着必须从头开始

对于PyTorch,我们使用一种称为反向模式自动区分的技术,该技术允许您在没有延迟或开销的情况下任意更改网络的行为方式。我们的灵感来自于几篇关于这一主题的研究论文,以及目前和过去的工作,如手电筒-自动分级自动评分链条

虽然这种技术不是PyTorch独有的,但它是迄今为止最快的实现之一。你在疯狂的研究中获得了最快的速度和最好的灵活性

Python优先

PyTorch不是到单一C++框架的Python绑定。它是为深度集成到Python而构建的。你可以像以前一样自然地使用它NumPy/科学Py/科学工具包-学习等。您可以用Python本身编写新的神经网络层,使用您喜欢的库并使用包,如CythonNumba我们的目标是不在适当的地方重新发明轮子。

势在必行的经验

PyTorch被设计为直观、线性的思想,并且易于使用。当您执行一行代码时,它就会被执行。没有异步的世界观。当您进入调试器或接收错误消息和堆栈跟踪时,理解它们很简单。堆栈跟踪准确地指向定义代码的位置。我们希望您永远不要因为错误的堆栈跟踪或异步且不透明的执行引擎而花费数小时调试您的代码

快速精益

PyTorch的框架开销最小。我们集成了加速库,如英特尔MKL和NVIDIA(CuDNNNCCL)以最大限度地提高速度。在核心上,其CPU和GPU张量以及神经网络后端(TH、THC、THNN、THCUNN)已经成熟,并且经过多年的测试

因此,PyTorch是相当快的-无论您运行的是小型神经网络还是大型神经网络

与Torch或某些替代方案相比,PyTorch中的内存使用效率非常高。我们已经为GPU编写了自定义内存分配器,以确保您的深度学习模型具有最高的内存效率。这使您能够训练比以前更大的深度学习模型

无痛延长

编写新的神经网络模块,或者与PyTorch的张量API接口,设计得简单明了,抽象最少

您可以使用Torch API在Python中编写新的神经网络图层或者您最喜欢的基于NumPy的库,如SciPy

如果您想用C/C++编写您的层,我们提供了一个方便的扩展API,它是高效的,并且具有最少的样板。不需要编写包装器代码。你可以看到此处提供教程这里有一个例子

安装

二进制文件

通过conda或pip轮从二进制文件安装的命令在我们的网站上提供:https://pytorch.org

NVIDIA Jetson平台

NVIDIA的Jetson Nano、Jetson TX2和Jetson AGX Xavier的Python轮可通过以下URL获得:

它们需要JetPack 4.2和更高版本,以及@达斯蒂-内华达州维护它们

来自源

如果从源代码安装,则需要Python 3.6.2或更高版本和C++14编译器。此外,我们强烈建议您安装蟒蛇环境。您将获得一个高质量的BLAS库(MKL),并且无论您的Linux发行版是什么,您都可以获得受控的依赖项版本

一旦你有了蟒蛇已安装,以下是说明

如果要使用CUDA支持进行编译,请安装

如果要禁用CUDA支持,请导出环境变量USE_CUDA=0其他可能有用的环境变量可以在setup.py

如果您正在为NVIDIA的Jetson平台(Jetson Nano、TX1、TX2、AGX Xavier)构建,请参阅以下安装PyTorch for Jetson Nano的说明此处提供

如果要使用ROCM支持进行编译,请安装

  • AMD ROCM4.0及更高版本的安装
  • ROCM目前仅支持Linux系统

如果要禁用ROCM支持,请导出环境变量USE_ROCM=0其他可能有用的环境变量可以在setup.py

安装依赖项

常见

conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses

在Linux上

# CUDA only: Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda110  # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo

在MacOS上

# Add these packages if torch.distributed is needed
conda install pkg-config libuv

在Windows上

# Add these packages if torch.distributed is needed.
# Distributed package support on Windows is a prototype feature and is subject to changes.
conda install -c conda-forge libuv=1.39

获取PyTorch源代码

git clone --recursive https://github.com/pytorch/pytorch
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive --jobs 0

安装PyTorch

在Linux上

export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py install

请注意,如果您正在为ROCM编译,则必须首先运行此命令:

python tools/amd_build/build_amd.py

请注意,如果您使用的是Python,您可能会遇到链接器导致的错误:

build/temp.linux-x86_64-3.7/torch/csrc/stub.o: file not recognized: file format not recognized
collect2: error: ld returned 1 exit status
error: command 'g++' failed with exit status 1

这是由以下原因引起的ld从Conda环境跟踪系统ld您应该使用较新版本的Python来修复此问题。推荐的Python版本为3.6.10+、3.7.6+和3.8.1+

在MacOS上

export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install

每个CUDA版本仅支持一个特定的XCode版本。据报道,以下组合可与PyTorch配合使用

CUDA版 Xcode版本
10.0 Xcode 9.4
10.1 Xcode 10.1

在Windows上

选择正确的Visual Studio版本

在Visual Studio的新版本中有时会出现回归,因此最好使用相同的Visual Studio版本16.8.5作为Pytorch CI。虽然PyTorch CI使用Visual Studio BuildTools,但您可以使用Visual Studio Enterprise、Professional或Community

如果您想构建遗留的python代码,请参阅在遗留代码和CUDA的基础上构建

使用CPU构建

使用CPU构建相当容易

有关OpenMP的说明:所需的OpenMP实施是英特尔OpenMP(IOMP)。为了链接到iomp,您需要手动下载库并通过调整设置构建环境CMAKE_INCLUDE_PATHLIB该说明这里是设置MKL和英特尔OpenMP的示例。如果没有这些CMake配置,将使用Microsoft Visual C OpenMP运行时(vcomp

使用CUDA构建

NVTX是使用CUDA构建Pytorch所必需的。NVTX是CUDA分布式的一部分,被称为“NSight Compute”。要将其安装到已安装的CUDA上,请再次运行CUDA安装并选中相应的复选框。确保在Visual Studio之后安装带Night Compute的CUDA

目前支持VS 2017/2019,支持忍者作为CMake的生成器。如果ninja.exe在以下位置检测到PATH,则使用忍者作为默认生成器,否则将使用VS 2017/2019
如果选择忍者作为生成器,则会选择最新的MSVC作为底层工具链

其他库,如岩浆oneDNN,也称为MKLDNN或DNNL,以及Sccache是经常需要的。请参阅安装帮助器要安装它们,请执行以下操作

您可以参考build_pytorch.bat其他一些环境变量配置的脚本

cmd

:: [Optional] If you want to build with the VS 2017 generator for old CUDA and PyTorch, please change the value in the next line to `Visual Studio 15 2017`.
:: Note: This value is useless if Ninja is detected. However, you can force that by using `set USE_NINJA=OFF`.
set CMAKE_GENERATOR=Visual Studio 16 2019

:: Read the content in the previous section carefully before you proceed.
:: [Optional] If you want to override the underlying toolset used by Ninja and Visual Studio with CUDA, please run the following script block.
:: "Visual Studio 2019 Developer Command Prompt" will be run automatically.
:: Make sure you have CMake >= 3.12 before you do this when you use the Visual Studio generator.
set CMAKE_GENERATOR_TOOLSET_VERSION=14.27
set DISTUTILS_USE_SDK=1
for /f "usebackq tokens=*" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [15^,16^) -products * -latest -property installationPath`) do call "%i\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=%CMAKE_GENERATOR_TOOLSET_VERSION%

:: [Optional] If you want to override the CUDA host compiler
set CUDAHOSTCXX=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\bin\HostX64\x64\cl.exe

python setup.py install
调整生成选项(可选)

您可以通过执行以下操作来调整cmake变量的配置(无需首先构建)。例如,可以通过这样的步骤来调整CuDNN或BLAS的预先检测的目录

在Linux上

export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
python setup.py build --cmake-only
ccmake build  # or cmake-gui build

在MacOS上

export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py build --cmake-only
ccmake build  # or cmake-gui build

Docker镜像

使用预构建映像

您还可以从Docker Hub获取预构建的坞站映像,并使用Docker v19.03+运行

docker run --gpus all --rm -ti --ipc=host pytorch/pytorch:latest

请注意,PyTorch使用共享内存在进程之间共享数据,因此如果使用Torch多处理(例如,对于多线程数据加载器),运行容器的默认共享内存段大小是不够的,您应该使用以下两种方法之一来增加共享内存大小--ipc=host--shm-size命令行选项用于nvidia-docker run

自己打造形象

注:必须使用18.06以上的坞站版本构建

这个Dockerfile用于构建支持CUDA 11.1和cuDNN V8的映像。你可以通过PYTHON_VERSION=x.yMake Variable指定Miniconda要使用的Python版本,或将其保留为未设置为使用默认版本

make -f docker.Makefile
# images are tagged as docker.io/${your_docker_username}/pytorch

构建文档

要构建各种格式的文档,您需要狮身人面像以及阅读文档的主题

cd docs/
pip install -r requirements.txt

然后,您可以通过运行以下命令来生成文档make <format>docs/文件夹。跑make要获取所有可用输出格式的列表,请执行以下操作

如果运行Katex错误npm install katex如果它持续存在,请尝试npm install -g katex

以前的版本

早期PyTorch版本的安装说明和二进制文件可在以下位置找到我们的网站

快速入门

帮助您入门的三点建议:

资源

沟通

发布和贡献

PyTorch有90天的发布周期(主要版本)。如果您通过以下方式遇到错误,请通知我们提交问题

我们感谢所有的贡献。如果您计划回馈错误修复,请在不做任何进一步讨论的情况下这样做

如果您计划为核心贡献新的功能、实用程序功能或扩展,请先打开一个问题并与我们讨论该功能。未经讨论发送PR可能最终导致拒绝PR,因为我们可能会将核心带到与您可能意识到的方向不同的方向

要了解更多关于为Pytorch做出贡献的信息,请参阅我们的投稿页面

团队

PyTorch是一个社区驱动的项目,有几个熟练的工程师和研究人员参与其中

PyTorch目前由亚当·帕兹克萨姆·格罗斯苏史密斯·钦塔拉格雷戈里·查南(Gregory Chanan)主要贡献来自于数以百计的各种形式和手段的人才。值得一提的是:特雷弗·基林(Trevor Killeen)、萨桑克·奇拉姆库尔蒂(Sasank Chilamkurthy)、谢尔盖·扎戈鲁伊科(Sergey Zagoruyko)、亚当·莱勒(Adam Lerer)、弗朗西斯科·马萨(Francisco Massa)、阿利汗·特贾尼(Alykhan Tejani)、卢卡·安提加(Luca Antiga)、阿尔班·德斯迈森(Alban Desmaison)、安德烈亚斯·科普夫(Andreas Koepf)、詹姆斯·布拉德伯里(James Bradbury)、林泽明、田远东、纪尧姆·兰普尔(Guillaume Lample

注:此项目与哈伯金/火炬同名同姓。休是Torch社区的一位有价值的贡献者,并在Torch和PyTorch的许多事情上提供了帮助

许可证

PyTorch具有BSD样式的许可证,可以在许可证