标签归档:deep-learning

PySyft-用于使用看不到的数据回答问题的库

用于对数据进行计算的库
你不是自己的,也看不到


PySyft是一个Python库,用于安全和私有的深度学习

PySyft将私有数据与模型训练解耦,使用Federated LearningDifferential Privacy和加密计算(如Multi-Party Computation (MPC)Homomorphic Encryption (HE))在主要的深度学习框架(如PyTorch和TensorFlow)中。加入到这场运动中来吧Slack


大多数软件库允许您计算您拥有的信息,并查看您控制的机器的内部情况。但是,这意味着在没有首先获得(至少是部分)信息所有权的情况下,您不能对该信息进行计算。这还意味着,如果不先获得对机器的控制,您就不能使用这些机器进行计算。这对人类协作非常有限,并且系统地推动了数据的集中化,因为如果不先将数据全部放在一个(中心)位置,您就无法处理大量数据

Syft生态系统试图改变这一系统,允许您编写软件,在您无法(完全)控制的计算机上计算您不拥有的信息。这不仅包括云中的服务器,还包括个人台式机、笔记本电脑、手机、网站和边缘设备。无论您的数据想要存放在您拥有的任何地方,Syft生态系统都可以帮助您将其保留在那里,同时允许将其私下用于计算

单声道回购🚝

此repo包含多个协同工作的项目,即PySyft和PyGrid。很快就会添加PyGrid,同时这是目录结构

OpenMined/PySyft
├── README.md   <-- You are here 📌
└── packages
    ├── grid    <-- The Grid droids from OpenMined/PyGrid
    └── syft    <-- The Syft droids you are looking for 👋🏽

注意事项更改整个文件夹结构可能会导致一些小问题。如果您发现了一个,请通知我们或打开公关

PySyft

PySyft是Syft生态系统的核心。它有两个主要目的。您可以使用PySyft执行两种类型的计算:

  1. 动态:直接计算您看不到的数据
  2. 静电:创建静电计算图,以后可以在不同的计算上部署/扩展

这个PyGrid library用作大规模管理和部署PySyft的API。它还允许您使用以下Syft工作器库扩展PySyft,以便在Web、移动和边缘设备上进行联合学习:

  • KotlinSyft(Android)
  • SwiftSyft(IOS)
  • syft.js(JavaScript)
  • PySyft(Python,您可以将PySyft本身用作这些“FL Worker库”之一)

但是,Syft生态系统只关注跨这些语言的一致对象序列化/反序列化、核心抽象和算法设计/执行。仅靠这些库不能将您与现实世界中的数据连接起来。Syft生态系统由网格生态系统提供支持,网格生态系统重点关注运行真实系统以计算和处理数据(如数据合规性Web应用程序)的部署、可扩展性和其他其他问题

  • PySyft是定义对象、抽象和算法的库
  • PyGrid是让您可以在真正的机构中部署它们的平台
  • PyGrid Admin是允许数据所有者管理其PyGrid部署的UI

有关PySyft的更详细说明,请参阅white paper on Arxiv

YouTube上的视频也解释了PySyft:

安装前

PySyft在PyPI和CONDA上可用

我们建议您在如下所示的虚拟环境中安装PySyftConda,因为它易于使用。如果您使用的是Windows,我们建议您安装Anaconda and using the Anaconda
Prompt
要从命令行工作,请执行以下操作

$ conda create -n pysyft python=3.9
$ conda activate pysyft
$ conda install jupyter notebook

版本支持

我们支持Linux操作系统MacOS窗口以及以下Python和Torch版本。旧版本可能可以运行,但我们已停止测试和支持它们

PY/手电筒 1.6 1.7 1.8
3.7
3.8
3.9

安装

管道

$ pip install syft

这将根据需要自动安装PyTorch和其他依赖项,以运行示例和教程。有关从源代码构建的更多信息,请参阅贡献指南here

文档

马上就来!在此之前,请查看以下示例

示例

可以找到示例的综合列表here

这些教程涵盖了各种用于数据科学和机器学习的Python库

所有示例都可以通过启动Jupyter笔记本并导航到examples文件夹

$ jupyter notebook

二重唱

Duet是PySyft中的一个点对点工具,它为数据所有者提供了一个研究友好的API来私下公开他们的数据,而数据科学家可以通过零知识访问控制机制访问或操作所有者端的数据。它旨在降低研究和隐私保护机制之间的屏障,这样就可以在目前无法访问或严格控制的数据上取得科学进展。使用Duet的主要好处是允许您开始使用PySyft,而无需管理完整的PyGrid部署。这是使用Syft的最简单途径,无需安装任何东西(Syft除外😉)

您可以找到所有Duet examplesexamples/duet文件夹

贡献

投稿人指南可以在here它涵盖了现在开始向PySyft贡献代码所需了解的所有内容

此外,加入快速增长的超过12,000人的社区SlackSlake社区非常友好,能够快速回答有关PySyft使用和开发的问题!

免责声明

这个软件是测试版。使用风险自负

关于0.2.x的快速说明

PySyft 0.2.x代码库现在位于自己的分支中here,但OpenMines不会对此版本范围提供官方支持。我们已经编制了一份名单FAQs与此版本相关。_

支持

要获得使用此库的支持,请加入#支持#松弛的渠道。Click here to join our Slack community!

组织贡献

我们非常感谢以下组织对PySyft的贡献!

  • |

许可证

Apache License 2.0

Fastbook-以Jupyter笔记本的形式出版的Fastai书

这些笔记本介绍了深度学习,fastai,以及PyTorchFastai是用于深度学习的分层API;有关详细信息,请参阅the fastai paper此回购中的所有内容版权所有杰里米·霍华德和西尔万·古格,2020年后

这些笔记本是用来a MOOC并构成了this book,目前可供购买。它没有与本草案相同的gpl限制。

笔记本和python中的代码.py文件包含在GPL v3许可证中;有关详细信息,请参阅许可证文件

其余部分(包括笔记本和其他散文中的所有减价单元)除复制笔记本或分叉本回购供您自己使用外,不得进行任何再分发或更改格式或介质的许可。任何商业或广播用途都是不允许的。我们免费提供这些材料,以帮助您学习深度学习,因此请尊重我们的版权和这些限制

如果您看到有人在其他地方托管这些材料的副本,请让他们知道他们的行为是不允许的,并可能导致法律诉讼。此外,他们会伤害社区,因为如果人们忽视我们的版权,我们就不太可能以这种方式发布更多的材料

这是一份初稿。如果您在运行笔记本时遇到问题,请搜索fastai-dev forum寻求答案,并在那里寻求帮助(如果需要)。请不要使用GitHub问题来解决笔记本运行问题

如果您对此回购提出任何拉取请求,那么您就是将该作品的版权分配给Jeremy Howard和Sylvain Gugger。(此外,如果您正在对拼写或文本进行小的编辑,请指定文件名,并对您要修复的内容进行非常简短的描述。审查者很难知道哪些修改已经做过了。谢谢您。)

引文

如果你想引用这本书,你可以使用以下内容:

@book{howard2020deep,
title={Deep Learning for Coders with Fastai and Pytorch: AI Applications Without a PhD},
author={Howard, J. and Gugger, S.},
isbn={9781492045526},
url={https://books.google.no/books?id=xd6LxgEACAAJ},
year={2020},
publisher={O'Reilly Media, Incorporated}
}

Pytorch-lightning-用于高性能人工智能研究的轻量级PyTorch包装器

Lightning设计理念

Lightning使用以下原则构建PyTorch代码:

Lightning强制您的代码采用以下结构,从而使其可重用和可共享:

  • 研究代码(LightningModule)
  • 工程代码(您删除,并由培训师处理)
  • 非必要的研究代码(日志记录等,这在回调中使用)
  • 数据(使用PyTorch DataLoaders或将其组织到LightningDataModule中)

一旦这样做了,您就可以在多GPU、TPU、CPU上进行培训,甚至可以在不更改代码的情况下进行16位精度的培训!

开始使用我们的2 step guide


持续集成

Lightning在多个GPU、TPU CPU上进行了严格的测试,并针对主要的Python和PyTorch版本进行了测试

当前生成状态
系统/火炬版本 1.4(最低请求。) 1.5 1.6 1.7 1.8(LTS) 1.9(最新)
Conda py3.7[Linux]
Linux py3.7[GPU**]
Linux py3.{6,7}[TPU*]
Linux py3.{6,7,8,9}
OSX py3.{6,7,8,9}
Windows py3.{6,7,8,9}
  • **测试在两个NVIDIA P100上运行
  • *测试在Google GKE TPUv2/3上运行
  • TPU py3.7意味着我们支持Colab和Kaggle环境

如何使用

步骤0:安装

从PyPI轻松安装

pip install pytorch-lightning
其他安装选项

使用可选依赖项安装

pip install pytorch-lightning['extra']

孔达

conda install pytorch-lightning -c conda-forge

安装稳定版1.3.x

1.3[稳定]的实际状态如下:





从源安装未来版本

pip install git+https://github.com/PytorchLightning/pytorch-lightning.git@release/1.3.x --upgrade

安装尖端技术-未来1.4

夜间从源安装(不保证)

pip install https://github.com/PyTorchLightning/pytorch-lightning/archive/master.zip

或通过测试PyPI

pip install -iU https://test.pypi.org/simple/ pytorch-lightning

步骤1:添加这些导入

import os
import torch
from torch import nn
import torch.nn.functional as F
from torchvision.datasets import MNIST
from torch.utils.data import DataLoader, random_split
from torchvision import transforms
import pytorch_lightning as pl

步骤2:定义LightningModule(nn.Module子类)

LightningModule定义完整的系统(即:GAN、自动编码器、BERT或简单图像分类器)

class LitAutoEncoder(pl.LightningModule):

    def __init__(self):
        super().__init__()
        self.encoder = nn.Sequential(nn.Linear(28 * 28, 128), nn.ReLU(), nn.Linear(128, 3))
        self.decoder = nn.Sequential(nn.Linear(3, 128), nn.ReLU(), nn.Linear(128, 28 * 28))

    def forward(self, x):
        # in lightning, forward defines the prediction/inference actions
        embedding = self.encoder(x)
        return embedding

    def training_step(self, batch, batch_idx):
        # training_step defines the train loop. It is independent of forward
        x, y = batch
        x = x.view(x.size(0), -1)
        z = self.encoder(x)
        x_hat = self.decoder(z)
        loss = F.mse_loss(x_hat, x)
        self.log('train_loss', loss)
        return loss

    def configure_optimizers(self):
        optimizer = torch.optim.Adam(self.parameters(), lr=1e-3)
        return optimizer

注:Training_Step定义训练循环。转发定义了LightningModule在推理/预测期间的行为方式

第三步:训练!

dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor())
train, val = random_split(dataset, [55000, 5000])

autoencoder = LitAutoEncoder()
trainer = pl.Trainer()
trainer.fit(autoencoder, DataLoader(train), DataLoader(val))

高级功能

闪电已经过去了40+ advanced features专为专业的大规模人工智能研究而设计

以下是一些示例:

突出显示的功能代码片段
# 8 GPUs
# no code changes needed
trainer = Trainer(max_epochs=1, gpus=8)

# 256 GPUs
trainer = Trainer(max_epochs=1, gpus=8, num_nodes=32)
在不更改代码的TPU上进行培训
# no code changes needed
trainer = Trainer(tpu_cores=8)
16位精度
# no code changes needed
trainer = Trainer(precision=16)
实验管理员
from pytorch_lightning import loggers

# tensorboard
trainer = Trainer(logger=TensorBoardLogger('logs/'))

# weights and biases
trainer = Trainer(logger=loggers.WandbLogger())

# comet
trainer = Trainer(logger=loggers.CometLogger())

# mlflow
trainer = Trainer(logger=loggers.MLFlowLogger())

# neptune
trainer = Trainer(logger=loggers.NeptuneLogger())

# ... and dozens more
提前停止
es = EarlyStopping(monitor='val_loss')
trainer = Trainer(callbacks=[es])
检查点设置
checkpointing = ModelCheckpoint(monitor='val_loss')
trainer = Trainer(callbacks=[checkpointing])
导出为Torchscript(JIT)(生产用途)
# torchscript
autoencoder = LitAutoEncoder()
torch.jit.save(autoencoder.to_torchscript(), "model.pt")
导出到ONNX(生产用途)
# onnx
with tempfile.NamedTemporaryFile(suffix='.onnx', delete=False) as tmpfile:
    autoencoder = LitAutoEncoder()
    input_sample = torch.randn((1, 64))
    autoencoder.to_onnx(tmpfile.name, input_sample, export_params=True)
    os.path.isfile(tmpfile.name)

培训回路的高级控制(高级用户)

对于复杂/专业级别的工作,您可以选择完全控制培训循环和优化器

class LitAutoEncoder(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.automatic_optimization = False

    def training_step(self, batch, batch_idx):
        # access your optimizers with use_pl_optimizer=False. Default is True
        opt_a, opt_b = self.optimizers(use_pl_optimizer=True)

        loss_a = ...
        self.manual_backward(loss_a, opt_a)
        opt_a.step()
        opt_a.zero_grad()

        loss_b = ...
        self.manual_backward(loss_b, opt_b, retain_graph=True)
        self.manual_backward(loss_b, opt_b)
        opt_b.step()
        opt_b.zero_grad()

相对于非结构化PyTorch的优势

  • 型号变得与硬件无关
  • 代码清晰易读,因为工程代码是抽象出来的
  • 更容易复制
  • 犯的错误更少,因为闪电处理了棘手的工程
  • 保持所有的灵活性(LightningModules仍然是PyTorch模块),但删除了大量的样板文件
  • Lightning与流行的机器学习工具进行了数十次集成
  • Tested rigorously with every new PR我们测试PyTorch和Python支持的版本、每个操作系统、多个GPU甚至TPU的每种组合
  • 最小运行速度开销(与纯PyTorch相比,每历元约300毫秒)

示例

你好,世界
对比学习
NLP
强化学习
愿景
经典ML

社区

闪电社区由

  • 10+ core contributors他们都是来自顶尖人工智能实验室的专业工程师、研究科学家和博士生的混合体
  • 480+活跃的社区贡献者

想要帮助我们构建Lightning并为数千名研究人员减少样板吗?Learn how to make your first contribution here

闪电也是PyTorch ecosystem这要求项目有可靠的测试、文档和支持

寻求帮助

如果您有任何问题,请:

  1. Read the docs
  2. Search through existing Discussions,或add a new question
  3. Join our slack

资金来源

We’re venture funded为确保我们能够提供全天候支持,请聘请全职员工,参加会议,并通过实施您要求的功能加快行动速度


网格AI

网格AI是我们在云上大规模训练模型的平台!

注册我们的免费社区层here

要使用GRID,请使用您的常规命令:

python my_model.py --learning_rate 1e-6 --layers 2 --gpus 4

并将其更改为使用GRID TRAIN命令:

grid train --grid_gpus 4 my_model.py --learning_rate 'uniform(1e-6, 1e-1, 20)' --layers '[2, 4, 8, 16]'

上面的命令将启动(20*4)个实验,每个实验在4个GPU(320个GPU!)上运行-不对代码进行任何更改


牌照

请遵守此存储库中列出的Apache 2.0许可证。此外,Lightning框架正在申请专利

BibTeX

如果您想引用该框架,请随意使用(但只有在您喜欢它的情况下😊)或zenodo

@article{falcon2019pytorch,
  title={PyTorch Lightning},
  author={Falcon, WA, et al.},
  journal={GitHub. Note: https://github.com/PyTorchLightning/pytorch-lightning},
  volume={3},
  year={2019}
}

Streamlit-Streamlight-使用Python构建数据应用程序的最快方式

欢迎来到Streamlight👋

构建和共享数据应用程序的最快方式

Streamlight可以让您在几分钟内将数据脚本转换为可共享的Web应用程序,而不是几周。这都是Python,开源的,免费的!一旦您创建了应用程序,您就可以使用我们的free sharing platform要部署、管理和与全世界共享您的应用程序,请执行以下操作

安装

pip install streamlit
streamlit hello

Streamlight还可以安装在虚拟环境中WindowsMac,以及Linux

举个小例子

Streamlight使构建交互式应用程序变得极其简单:

import streamlit as st

x = st.slider('Select a value')
st.write(x, 'squared is', x * x)

一个更大的例子

Streamlitt简单而集中的API让您可以构建极其丰富和强大的工具。This demo project允许您浏览整个Udacity self-driving-car dataset类并实时运行推理。YOLO object detection net

完整的演示用不到300行Python代码实现。事实上,这款应用程序包含only 23 Streamlit calls它展示了Streamlight的所有主要构建块。您现在可以在以下地址尝试share.streamlit.io/streamlit/demo-self-driving

Streamlight GitHub徽章

Streamlight的GitHub徽章可帮助其他人找到并使用您的Streamlight应用程序

部署应用程序后,您可以将此徽章直接嵌入到GitHub readme.md中,如下所示:

[![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://share.streamlit.io/yourGitHubName/yourRepo/yourApp/)

更多信息

为团队提供流光照明

Streamlit for Teams是我们的企业解决方案,用于部署、管理、共享和协作您的Streamlight应用程序。Streamlight for Teams提供安全的单击部署、身份验证、Web编辑、版本控制等功能。它目前处于封闭测试阶段,您可以join the wait-list here

许可证

Streamlight是完全免费和开源的,并在Apache 2.0许可证

TensorFlow-Course-📡简单易用的TensorFlow教程

目录

Download Free TensorFlow Roadmap EBook

Slack Group

What is TensorFlow?

TensorFlow是一个开放源码软件库,用于跨一系列任务进行数据流编程。它是一个符号数学库,也用于机器学习应用程序,如神经网络。在谷歌,它同时用于研究和生产,经常取代其封闭源代码的前身DistBelef

TensorFlow是由谷歌大脑团队开发的,供谷歌内部使用。它是在Apache2.0开放源码许可下于2015年11月9日发布的

Motivation

这个开源项目有不同的动机。TensorFlow(在我们撰写本文时)是目前最好的深度学习框架之一。应该问的问题是,当网上有这么多关于TensorFlow的其他教程时,为什么要创建这个存储库?

Why use TensorFlow?

如今,深度学习非常受关注–迫切需要算法和体系结构的快速和优化实现。TensorFlow就是为实现这一目标而设计的

TensorFlow的强大优势在于它可以灵活地设计高度模块化的模型,这对于初学者来说也可能是一个劣势,因为在创建模型时必须将许多部分放在一起考虑

通过开发高级API(如KerasSlim其中抽象了许多用于设计机器学习算法的部分

TensorFlow的有趣之处在于这些天来,它随处可见。很多研究人员和开发人员都在使用它它的社区正在以光速增长好了!考虑到TensorFlow社区涉及的人数众多,因此许多问题都可以很容易地处理,因为这些问题通常与许多其他人遇到的问题相同

What’s the point of this repository?

仅仅为了开发一些东西而开发开放源码项目并不是这种努力背后的原因考虑到要向这个大型社区添加大量教程,创建这个资源库是为了打破通常发生在大多数开放源码项目中的跳入和跳出过程,但是为什么以及如何呢?

首先,把精力放在大多数人不会停下来看一看的东西上有什么意义?创建对开发人员和研究人员社区中的任何人都没有帮助的东西有什么意义?为什么要把时间花在容易被遗忘的事情上呢?但我们要怎么做呢?甚至到目前为止,关于TensorFlow的教程数不胜数,无论是关于模型设计还是TensorFlow工作流

他们中的大多数都太复杂了,或者缺乏文档。只有几个可用的教程简明扼要、结构良好,并为其特定实现的模型提供了足够的洞察力

此项目的目标是帮助社区提供结构化教程以及简单和优化的代码实现,以便更好地了解如何使用TensorFlow快速有效

值得注意的是,这个项目的主要目标是提供文档齐全的教程和不太复杂的代码。好了!

TensorFlow Installation and Setup the Environment

要安装TensorFlow,请参阅以下链接:

建议安装虚拟环境,以避免包冲突,并具有自定义工作环境的能力

TensorFlow Tutorials

此存储库中的教程被划分为相关类别


Warm-up

# 主题 源代码 媒体
1个 启动
Notebook/Python Video Tutorial

Basics

# 主题 源代码 媒体
1个 张量
Notebook/Python Video Tutorial
2个 自动区分
Notebook/Python Video Tutorial
3个 图形导论
Notebook/Python Video Tutorial
4. TensorFlow模型
Notebook/Python Video Tutorial

Basic Machine Learning

# 主题 源代码 更多 媒体
1个 线性回归
Notebook/Python Tutorial Video Tutorial
2个 数据增强
Notebook/Python Tutorial Video Tutorial

Neural Networks

# 主题 源代码 媒体
1个 多层感知器
Notebook/Python Video Tutorial
2个 卷积神经网络
Notebook/Python Video Tutorial

Advanced

# 主题 源代码 媒体
1个 定制培训
Notebook/Python Video Tutorial
2个 数据集生成器
Notebook/Python Video Tutorial
3个 创建TF记录
Notebook/Python Video Tutorial

Some Useful Tutorials

Contributing

向此存储库投稿时,请先通过问题、电子邮件或任何其他方法与此存储库的所有者讨论您希望进行的更改,然后再进行更改。对于打字错误,请不要创建拉取请求。取而代之的是,在问题中声明它们或通过电子邮件通知存储库所有者

请注意,我们有行为准则,请在您与项目的所有交互中遵循该准则

Pull Request Process

请考虑以下标准,以便更好地帮助我们:

  • 拉取请求主要预期为代码脚本建议或改进
  • 请不要更改IPython文件。而是更改相应的Python文件
  • 与非代码脚本部分相关的拉取请求预计会对文档产生重大影响。否则,预计将在问题部分公布。
  • 在执行构建和创建拉入请求时,请确保在图层结束之前移除所有安装或构建依赖项
  • 添加带有接口更改详细信息的注释,包括新的环境变量、暴露的端口、有用的文件位置和容器参数
  • 一旦您获得至少一个其他开发人员的签字,您就可以合并拉取请求,或者如果您没有权限这样做,如果您相信所有检查都已通过,您可以请求所有者为您合并该请求

Final Note

我们期待着您的善意反馈。请帮助我们改进这个开源项目,让我们的工作做得更好。对于捐款,请创建拉取请求,我们会立即进行调查。再次感谢您的好意反馈和详细的代码检查

Developers

公司:灌输人工智能[Website]

创建者:机器学习思维模式[BlogGitHubTwitter]

开发人员:Amirsina Torfi[GitHubPersonal WebsiteLinkedin]

Paddle 并行分布式深度学习:来自工业实践的机器学习框架

欢迎使用PaddlePaddle GitHub

PaddlePaddle作为国内唯一的自主研发深度学习平台,自2016年起正式向专业社区开源。它是一个技术先进、功能丰富的工业平台,涵盖了核心深度学习框架、基础模型库、端到端开发工具包、工具和组件以及服务平台。PaddlePaddle起源于工业实践,致力于工业化。它已经被包括制造业、农业、企业服务等在内的广泛领域广泛采用,同时服务于230多万开发者。凭借这些优势,PaddlePaddle已经帮助越来越多的合作伙伴将人工智能商业化

安装

最新的PaddlePaddle版本:v2.1

我们的愿景是通过PaddlePaddle为每个人提供深度学习。请参阅我们的release announcement要跟踪PaddlePaddle的最新功能,请执行以下操作

安装最新稳定版本:

# CPU
pip install paddlepaddle
# GPU
pip install paddlepaddle-gpu

有关安装的更多信息,请查看Quick Install

现在我们的开发者可以免费获取特斯拉V100在线计算资源。如果你通过AI Studio创建一个程序,你将获得每天8小时的在线培训模型。Click here to start

四大领先技术

  • 深度神经网络产业发展的敏捷框架

    PaddlePaddle深度学习框架通过利用可编程方案来构建神经网络,在简化开发的同时降低了技术负担。它同时支持声明式编程和命令式编程,同时保留了开发灵活性和高运行时性能。神经结构可以由算法自动设计,比人类专家设计的神经结构具有更好的性能

  • 支持深度神经网络的超大规模训练

    PaddlePaddle在超大规模深度神经网络训练方面取得突破性进展。它推出了世界上第一个大规模开源培训平台,支持使用分布在数百个节点上的数据源进行具有1000亿个功能和数万亿参数的深度网络的培训。PaddlePaddle克服了超大规模深度学习模型在线深度学习的挑战,进一步实现了超过1万亿参数的模型实时更新Click here to learn more

  • 面向全面部署环境的高性能推理引擎

    PaddlePaddle不仅兼容第三方开源框架中训练的模型,还为各种生产场景提供完整的推理产品。我们的推理产品线包括Paddle Inference:用于高性能服务器和云推理的原生推理库;Paddle Serving:适用于分布式和流水线生产的面向服务的框架;Paddle Lite:适用于移动和物联网环境的超轻量级推理引擎;Paddle.js:浏览器和小应用的前端推理机。此外,通过在每个场景中使用领先的硬件进行大量优化,Paddle推理引擎的性能优于大多数其他主流框架

  • 具有开放源代码库的面向行业的模型和库

    PaddlePaddle收录并维护了行业内长期实践和打磨的100多款主流车型。其中一些车型在关键的国际比赛中获得了大奖。与此同时,PaddlePaddle还拥有200多个预训模型(其中一些带有源代码),以促进工业应用的快速发展Click here to learn more

文档

我们提供EnglishChinese文档

  • Guides

    您可能希望从如何使用PaddlePaddle实现深度学习基础知识开始

  • Practice

    到目前为止,您已经熟悉了流体。下一步应该是建立一个更有效的模型或发明您的原始运算符

  • API Reference

    我们的新API支持更短的程序

  • How to Contribute

    我们感谢您的贡献!

沟通

  • Github Issues:错误报告、功能请求、安装问题、使用问题等
  • QQ讨论群:793866180(划桨)
  • Forums讨论实施、研究等

课程

  • Server Deployments:通过本地和远程服务介绍高性能服务器部署的课程
  • Edge Deployments:介绍从移动、物联网到Web和小程序的边缘部署课程

版权和许可

PaddlePaddle在Apache-2.0 license

100-Days-Of-ML-Code-ML代码的100天中文版

机器学习100天

英文原版请移步Avik-Jain那就是。数据在这里

翻译前请先阅读规范。常见问题解答见FAQ

目录

数据预处理|第1天

数据预处理实现

简单线性回归|第2天

简单线性回归实现

多元线性回归|第3天

多元线性回归实现

逻辑回归|第4天

逻辑回归|第5天

今天我深入研究了逻辑回归到底是什么,以及它背后的数学是什么.学习了如何计算代价函数,以及如何使用梯度下降法来将代价函数降低到最小.
由于时间关系,我将隔天发布信息图.如果有人在机器学习领域有一定经验,并愿意帮我编写代码文档,也了解GitHub的Markdown语法,请在领英联系我。

逻辑回归|第6天

逻辑回归实现

K近邻法(k-NN)|第7天

逻辑回归背后的数学|第8天

为了使我对逻辑回归的见解更加清晰,我在网上搜索了一些资源或文章,然后我就发现了Saishruthi Swminathan的这篇文章

它给出了逻辑回归的详细描述.请务必看一看.

支持向量机(支持向量机)|第9天

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

支持向量机和K近邻法|第10天

了解更多关于支持向量机如何工作和实现KNN算法的知识.

K近邻法(k-NN)|第11天

K近邻法(k-NN)实现

支持向量机(支持向量机)|第12天

支持向量机(支持向量机)|第13天

SVM实现

支持向量机(支持向量机)的实现|第14天

今天我在线性相关数据上实现了支持向量机。使用SCHKIT-学习库。在科学套件-了解中我们有服务分类器,我们用它来完成这个任务。将在下一次实现时使用内核技巧。python代码见此处,jupyter笔记本见此处那就是。

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

学习不同类型的朴素贝叶斯分类器同时开始Bloomberg的课程.课程列表中的第一个是黑盒机器学习.它给出了预测函数,特征提取,学习算法,性能评估,交叉验证,样本偏差,非平稳性,过度拟合和超参数调整的整体观点.

通过内核技巧实现支持向量机|第16天

使用科学工具包-学习库实现了支持向量机算法以及内核函数,该函数将我们的数据点映射到更高维度以找到最佳超平面。

在Coursera开始深度学习的专业课程|第17天

在1天内完成第1周和第2周内容以及学习课程中的逻辑回归神经网络。

继续Coursera上的深度学习专业课程|第18天

完成课程1.用Python自己实现一个神经网络.

学习问题和Yaser Abu-Mostafa教授|第19天

开始Yaser Abu-Mostafa教授的加州理工学院机器学习课程-CS156中的课程1.这基本上是对即将到来的课程的一种介绍.他也介绍了感知算法.

深度学习专业课程2|第20天

完成改进深度神经网络第1周内容:参数调整,正则化和优化.

网页搜罗|第21天

观看了一些关于如何使用美汤进行网络爬虫的教程,以便收集用于构建模型的数据。

学习还可行吗?|第22天

完成Yaser Abu-Mostafa教授的加州理工学院机器学习课程-CS156中的课程2.学习Hoeffding不等式.

决策树|第23天

统计学习理论的介绍|第24天

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

决策树|第25天

决策树实现

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

发现Youtube一个神奇的频道3Blue1Brown,它有一个播放列表“线性代数的本质”。看完了4个视频,包括了向量,线性组合,跨度,基向量,线性变换和矩阵乘法.

B站播放列表在这里那就是。

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

继续观看了4个视频,内容包括三维变换、行列式、逆矩阵、列空间、零空间和非方矩阵.

B站播放列表在这里那就是。

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

继续观看了3个视频,内容包括点积和叉积.

B站播放列表在这里那就是。

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

观看了剩余的视频12到14,内容包括特征向量和特征值,以及抽象向量空间.

B站播放列表在这里那就是。

微积分的本质|第30天

完成上一播放列表后,Youtube推荐了新内容“微积分的本质”,今天看完了其中的3个视频,包括导数、链式法则、乘积法则和指数导数。

B站播放列表在这里那就是。

微积分的本质|第31天

观看了2个视频,内容包括隐分化与极限.

B站播放列表在这里那就是。

微积分的本质|第32天

观看了剩余的4个视频,内容包括积分与高阶导数.

B站播放列表在这里那就是。

随机森林|第33天

随机森林|第34天

随机森林实现

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

Youtube频道3Blue1Brown中有精彩的视频介绍神经网络。这个视频提供了很好的解释,并使用手写数字数据集演示基本概念.

B站视频在这里那就是。

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

Youtube频道3Blue1Brown关于神经网络的第2部分,这个视频用有趣的方式解释了梯度下降法。推荐必须观看169

B站视频在这里那就是。

反向传播法究竟做什么?|深度学习,第3章|第37天

Youtube频道3Blue1Brown关于神经网络的第3部分,这个视频主要介绍了偏导数和反向传播法。

B站视频在这里那就是。

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

Youtube频道3Blue1Brown关于神经网络的第3部分,这个视频主要介绍了偏导数和反向传播法。

B站视频在这里那就是。

第1部分|深度学习基础Python,TensorFlow和Kera|第39天

视频地址在这里那就是。
中文文字版notebook那就是。

第2部分|深度学习基础Python,TensorFlow和Kera|第40天

视频地址在这里那就是。
中文文字版notebook那就是。

第3部分|深度学习基础Python,TensorFlow和Kera|第41天

视频地址在这里那就是。
中文文字版notebook那就是。

第4部分|深度学习基础Python,TensorFlow和Kera|第42天

视频地址在这里那就是。
中文文字版notebook那就是。

K-均值聚类|第43天

转到无监督学习,并研究了聚类.可在作者网站查询.发现一个奇妙的动画有助于理解K-均值聚类

K-均值聚类|第44天

(实现(待添加代码)

深入研究|数字|第45天

得到JK Vanderplas写的书“Python数据科学手册(Python数据科学手册)”,Jupyter Notebook在这里那就是。
高清中文版pdf

第2章:Numpy介绍,包括数据类型、数组和数组计算。
代码如下:
2 NumPy入门

2.1 理解Python中的数据类型

2.2 NumPy数组基础

2.3 NumPy数组的计算:通用函数

深入研究|数字|第46天

第2章:聚合,比较运算符和广播.
代码如下:
2.4 聚合:最小值、最大值和其他值

2.5 数组的计算:广播

2.6 比较、掩码和布尔运算

深入研究|数字|第47天

第2章:花哨的索引,数组排序,结构化数据.
代码如下:
2.7 花哨的索引

2.8 数组的排序

2.9 结构化数据:NumPy的结构化数组

深入研究|熊猫|第48天

第3章:熊猫数据处理
包含Pandas对象,数据取值与选择,数值运算方法,处理缺失值,层级索引,合并数据集.
代码如下:
3 Pandas数据处理

3.1 Pandas对象简介

3.2 数据取值与选择

3.3 Pandas数值运算方法

3.4 处理缺失值

3.5 层级索引

3.6 合并数据集:ConCat和Append方法

深入研究|熊猫|第49天

第3章:完成剩余内容-合并与连接,累计与分组,数据透视表.
代码如下:
3.7 合并数据集:合并与连接

3.8 累计与分组

3.9 数据透视表

深入研究|熊猫|第50天

第3章:向量化字符串操作,处理时间序列.
代码如下:
3.10 向量化字符串操作

3.11 处理时间序列

3.12 高性能Pandas:eval()与query()

深入研究|MATPLOTLIB|第51天

第4章:Matplotlib数据可视化
学习简易线形图,简易散点图,密度图与等高线图
代码如下:
4 Matplotlib数据可视化

4.1 简易线形图

4.2 简易散点图

4.3 可视化异常处理

4.4 密度图与等高线图

深入研究|MATPLOTLIB|第52天

第4章:Matplotlib数据可视化
学习直方图,配置图例,配置颜色条,多子图.
代码如下:
4.5 直方图

4.6 配置图例

4.7 配置颜色条

4.8 多子图

4.9 文字与注释

深入研究|MATPLOTLIB|第53天

第4章:Matplotlib数据可视化
学习三维绘图.
4.12 画三维图

层次聚类|第54天

动画演示

Ray 一个开放源码框架,为构建分布式应用程序提供简单、通用的API

Ray为构建分布式应用程序提供了简单、通用的API,为构建分布式应用程序提供简单、通用的API。Ray与RLlib(一个可伸缩的强化学习库)和Tune(一个可伸缩的超参数调整库)可以打包在一起。

Ray附带以下库,用于加速机器学习工作负载:

  • Tune:可伸缩的超参数调整
  • RLlib:可扩展强化学习
  • RaySGD:分布式培训包装器
  • Ray Serve:可扩展、可编程的服务

也有很多community integrations和Ray在一起,包括DaskMARSModinHorovodHugging FaceScikit-learn,以及其他。请查看full list of Ray distributed libraries here

使用以下选项安装Ray:pip install ray有关夜间车轮的信息,请参阅Installation page

快速入门

并行执行Python函数

import ray
ray.init()

@ray.remote
def f(x):
    return x * x

futures = [f.remote(i) for i in range(4)]
print(ray.get(futures))

要使用Ray的演员模型,请执行以下操作:

import ray
ray.init()

@ray.remote
class Counter(object):
    def __init__(self):
        self.n = 0

    def increment(self):
        self.n += 1

    def read(self):
        return self.n

counters = [Counter.remote() for i in range(4)]
[c.increment.remote() for c in counters]
futures = [c.read.remote() for c in counters]
print(ray.get(futures))

Ray程序可以在一台计算机上运行,也可以无缝扩展到大型群集。要在云中执行上述Ray脚本,只需下载this configuration file,然后运行:

ray submit [CLUSTER.YAML] example.py --start

阅读有关以下内容的更多信息launching clusters

调整快速入门

Tune是一个用于任何规模的超参数调优的库

要运行此示例,您需要安装以下软件:

$ pip install "ray[tune]"

此示例运行并行格网搜索以优化示例目标函数

from ray import tune


def objective(step, alpha, beta):
    return (0.1 + alpha * step / 100)**(-1) + beta * 0.1


def training_function(config):
    # Hyperparameters
    alpha, beta = config["alpha"], config["beta"]
    for step in range(10):
        # Iterative training function - can be any arbitrary training procedure.
        intermediate_score = objective(step, alpha, beta)
        # Feed the score back back to Tune.
        tune.report(mean_loss=intermediate_score)


analysis = tune.run(
    training_function,
    config={
        "alpha": tune.grid_search([0.001, 0.01, 0.1]),
        "beta": tune.choice([1, 2, 3])
    })

print("Best config: ", analysis.get_best_config(metric="mean_loss", mode="min"))

# Get a dataframe for analyzing trial results.
df = analysis.results_df

如果安装了TensorBoard,则自动可视化所有试验结果:

tensorboard --logdir ~/ray_results

RLlib快速入门

RLlib是构建在Ray之上的用于强化学习的开源库,它为各种应用程序提供了高可伸缩性和统一的API

pip install tensorflow  # or tensorflow-gpu
pip install "ray[rllib]"
import gym
from gym.spaces import Discrete, Box
from ray import tune

class SimpleCorridor(gym.Env):
    def __init__(self, config):
        self.end_pos = config["corridor_length"]
        self.cur_pos = 0
        self.action_space = Discrete(2)
        self.observation_space = Box(0.0, self.end_pos, shape=(1, ))

    def reset(self):
        self.cur_pos = 0
        return [self.cur_pos]

    def step(self, action):
        if action == 0 and self.cur_pos > 0:
            self.cur_pos -= 1
        elif action == 1:
            self.cur_pos += 1
        done = self.cur_pos >= self.end_pos
        return [self.cur_pos], 1 if done else 0, done, {}

tune.run(
    "PPO",
    config={
        "env": SimpleCorridor,
        "num_workers": 4,
        "env_config": {"corridor_length": 5}})

Ray Serve快速入门

Ray Serve是一个构建在Ray之上的可伸缩的模型服务库。它是:

  • 框架不可知性:使用相同的工具包提供各种服务,从使用PyTorch或TensorFlow&Kera等框架构建的深度学习模型到Scikit-Learning模型或任意业务逻辑
  • Python优先:在纯Python中配置声明性服务的模型,不需要YAML或JSON配置
  • 以性能为导向:启用批处理、流水线和GPU加速以提高模型的吞吐量
  • 原生合成:允许您通过将多个模型组合在一起来驱动单个预测来创建“模型管道”
  • 水平可扩展:随着您添加更多的机器,Serve可以线性扩展。使您的ML支持的服务能够处理不断增长的流量

要运行此示例,您需要安装以下软件:

$ pip install scikit-learn
$ pip install "ray[serve]"

此示例Run服务于一个SCRICKIT-LEARN梯度增强分类器

from ray import serve
import pickle
import requests
from sklearn.datasets import load_iris
from sklearn.ensemble import GradientBoostingClassifier

# Train model
iris_dataset = load_iris()
model = GradientBoostingClassifier()
model.fit(iris_dataset["data"], iris_dataset["target"])

# Define Ray Serve model,
class BoostingModel:
    def __init__(self):
        self.model = model
        self.label_list = iris_dataset["target_names"].tolist()

    def __call__(self, flask_request):
        payload = flask_request.json["vector"]
        print("Worker: received flask request with data", payload)

        prediction = self.model.predict([payload])[0]
        human_name = self.label_list[prediction]
        return {"result": human_name}


# Deploy model
client = serve.start()
client.create_backend("iris:v1", BoostingModel)
client.create_endpoint("iris_classifier", backend="iris:v1", route="/iris")

# Query it!
sample_request_input = {"vector": [1.2, 1.0, 1.1, 0.9]}
response = requests.get("http://localhost:8000/iris", json=sample_request_input)
print(response.text)
# Result:
# {
#  "result": "versicolor"
# }

更多信息

较旧的文档:

参与其中

Spleeter-Deezer 源分离库,包括预先训练的模型

关于

SpleeterDeezer编写了预先训练好的模型的源分隔库Python并使用Tensorflow它使训练源分离模型变得很容易(假设您有一个孤立源的数据集),并且提供了已经训练过的用于执行各种风格的分离的最先进的模型:

  • 人声(歌声)/伴奏分离(2 stems)
  • 人声/鼓/低音/其他分离(4 stems)
  • 人声/鼓/低音/钢琴/其他分离(5 stems)

2杆和4杆型号有high performancesmusdb数据集。Spleeter速度也非常快,因为当在GPU上运行时,它可以将音频文件分离到4条主干,速度比实时快100倍

我们设计了Spleeter这样你就可以直接从command line以及直接在您自己的开发管道中作为Python library它可以与安装在一起pip或与以下内容一起使用Docker

项目和软件使用Spleeter

自从发布以来,已经有多个叉子暴露出来了。Spleeter通过引导式用户界面(GUI)或独立的免费或付费网站。请注意,我们不会主办、维护或直接支持任何此类计划

也就是说,很多很酷的项目都建在我们的基础上。值得注意的是,移植到Ableton Live生态系统通过Spleeter 4 Max项目

Spleeter专业音频软件也使用了预先训练好的模型。以下是一个非详尽的列表:

🆕Spleeter是正在进行中的基线Music Demixing Challenge好了!

快速入门

想试一下,但不想安装任何东西吗?我们已经建立了一个Google Colab

准备好加入挖洞了吗?只需几行代码,您就可以安装Spleeter并从示例音频文件中分离声乐和伴奏部分。您需要先安装ffmpeglibsndfile它可以在大多数平台上使用Conda

# install dependencies using conda
conda install -c conda-forge ffmpeg libsndfile
# install spleeter with pip
pip install spleeter
# download an example audio file (if you don't have wget, use another tool for downloading)
wget https://github.com/deezer/spleeter/raw/master/audio_example.mp3
# separate the example audio into two components
spleeter separate -p spleeter:2stems -o output audio_example.mp3

⚠️请注意,我们不再推荐使用conda用于安装喷射器

⚠️苹果M1芯片有一些已知的问题,主要是由于TensorFlow兼容性问题。在这些问题得到解决之前,您可以使用this workaround

您应该会得到两个独立的音频文件(vocals.wavaccompaniment.wav)在output/audio_example文件夹

有关详细文档,请查看repository wiki

开发和测试

此项目使用以下工具进行管理Poetry,要运行测试套件,您可以执行以下命令集:

# Clone spleeter repository
git clone https://github.com/Deezer/spleeter && cd spleeter
# Install poetry
pip install poetry
# Install spleeter dependencies
poetry install
# Run unit test suite
poetry run pytest tests/

参考文献

如果您使用Spleeter在您的工作中,请引用:

@article{spleeter2020,
  doi = {10.21105/joss.02154},
  url = {https://doi.org/10.21105/joss.02154},
  year = {2020},
  publisher = {The Open Journal},
  volume = {5},
  number = {50},
  pages = {2154},
  author = {Romain Hennequin and Anis Khlif and Felix Voituret and Manuel Moussallam},
  title = {Spleeter: a fast and efficient music source separation tool with pre-trained models},
  journal = {Journal of Open Source Software},
  note = {Deezer Research}
}

许可证

的代码SpleeterMIT-licensed

免责声明

如果您计划使用Spleeter对于受版权保护的材料,请确保事先获得版权所有者的适当授权

故障排除

Spleeter是一款复杂的软件,尽管我们不断尝试改进和测试它,但您在运行它时可能会遇到意想不到的问题。如果是这样的话,请查看FAQ page第一个以及currently open issues

Windows用户

似乎有时快捷命令spleeter在Windows上无法正常工作。这是一个已知的问题,我们希望很快就能解决。在此期间,更换spleeter separate通过python -m spleeter separate在命令行中,它应该可以工作

贡献

如果您愿意参与开发Spleeter我们非常欢迎您这样做。请不要犹豫向我们提出拉货要求,我们会尽最大努力快速检查。请查看我们的guidelines第一

注意事项

此存储库包括演示音频文件audio_example.mp3这是史蒂文·M·布莱恩特(Steven M Bryant)“慢动作梦”(Slow Motion Dream)的节选(C)版权所有2011年,版权归知识共享署名(3.0)license英国《金融时报》:CSoul,Alex Beroza&Robert Siekawitch

CNTK-微软认知工具包(CNTK),一个开源的深度学习工具包

CNTK

聊天 Windows生成状态 Linux构建状态

Microsoft认知工具包(https://cntk.ai)是一个统一的深度学习工具包,它通过有向图将神经网络描述为一系列计算步骤。在这个有向图中,叶节点表示输入值或网络参数,而其他节点表示对其输入的矩阵运算。CNTK允许用户轻松地实现和组合流行的模型类型,例如前馈DNN、卷积网络(CNN)和递归网络(RNNs/LSTM)。它通过跨多个GPU和服务器的自动区分和并行化实现随机梯度下降(SGD,误差反向传播)学习。自2015年4月以来,CNTK一直在开源许可证下提供。我们希望社区能够利用CNTK的优势,通过开放源码工作代码的交流,更快地分享想法

安装

安装夜间软件包

如果您更喜欢使用MASTER的最新CNTK位,请使用CNTK夜间软件包之一:

学习CNTK

您可以通过以下资源了解更多关于使用和贡献CNTK的信息:

更多信息

免责声明

亲爱的社区:

随着我们对ONNX和ONNX Runtime的持续贡献,我们已经使AI框架生态系统内的互操作变得更容易,并为传统ML模型和深度神经网络访问高性能的跨平台推理功能。在过去的几年里,我们有幸开发了这样的关键开源机器学习项目,包括Microsoft Cognitive Toolkit,它使其用户能够利用整个行业在大规模深度学习方面的进步

今天的2.7版本将是CNTK的最后一个主要版本。我们可能会有一些后续的小版本来修复错误,但这些版本将根据具体情况进行评估。此版本之后没有开发新功能的计划

CNTK 2.7版本完全支持ONNX 1.4.1,我们鼓励那些寻求将其CNTK模型运行化的用户利用ONNX和ONNX Runtime。展望未来,用户可以通过众多支持ONNX的框架继续利用不断发展的ONNX创新。例如,用户可以从PyTorch本机导出ONNX模型,或使用TensorFlow-ONNX转换器将TensorFlow模型转换为ONNX

我们非常感谢自CNTK最初开放源码发布以来多年来我们从贡献者和用户那里得到的所有支持。CNTK使微软团队和外部用户都能够在各种深度学习应用程序中执行复杂而大规模的工作负载,例如该框架的创始人微软语音研究人员在语音识别方面取得的历史性突破

随着ONNX越来越多地被用于为Bing和Office等微软产品提供服务的模型,我们致力于将研究创新与生产的严格要求相结合,以推动生态系统向前发展

最重要的是,我们的目标是使跨软件和硬件堆栈的深度学习创新尽可能开放和可访问。我们将努力将CNTK的现有优势和最新的最新研究成果应用到其他开源项目中,以真正扩大此类技术的应用范围。

怀着感激之情,

–CNTK团队

Microsoft开放源代码行为准则

本项目采用了Microsoft Open Source Code of Conduct有关更多信息,请参阅Code of Conduct FAQ或联系方式opencode@microsoft.com如有任何其他问题或评论

新闻

您可以在以下网站上找到更多新闻the official project feed

2019-03-29CNTK 2.7.0

此版本的亮点

  • 已迁移到适用于Windows和Linux的CUDA 10
  • 在ONNX导出中支持高级RNN环路
  • 以ONNX格式导出大于2 GB的型号
  • 在大脑脚本训练动作中支持FP16

支持CUDA 10的CNTK

CNTK现在支持CUDA 10。这需要更新到Visual Studio 2017 v15.9 for Windows的构建环境

要在Windows上设置生成和运行时环境,请执行以下操作:

要使用docker在Linux上设置构建和运行时环境,请使用Dockerfiles构建Unbuntu 16.04坞站映像here对于其他Linux系统,请参考Dockerfile来设置CNTK的依赖库

在ONNX导出中支持高级RNN环路

带有递归循环的CNTK模型可以通过扫描操作导出到ONNX模型

以ONNX格式导出大于2 GB的型号

要以ONNX格式导出大于2 GB的模型,可使用cntk.Function API:Save(Self,FileName,Format=ModelFormat.CNTKv2,USE_EXTERNAL_FILES_TO_STORE_PARAMETERS=FALSE),并将‘Format’设置为ModelFormat.ONNX,将Use_External_Files_to_Store_Parameters设置为True。在这种情况下,模型参数保存在外部文件中。使用onnxrun进行模型评估时,导出的模型应与外部参数文件一起使用

2018/11/26
Netron现在支持可视化CNTK v1和CNTK v2.model文件

项目变更日志

2018-09-17CNTK 2.6.0

高效群卷积

对CNTK中的分组卷积实现进行了更新。更新后的实现不再创建分组卷积的子图(使用切片和拼接),而是直接使用cuDNN7和MKL2017API。这在性能和型号大小方面都改善了体验

例如,对于具有以下属性的单个组卷积OP:

  • 输入张量(C,H,W)=(32,128,128)
  • 输出通道数=32(通道倍增为1)
  • 组=32(深度卷积)
  • 内核大小=(5,5)

此单个节点的比较编号如下:

第一个标题 GPU EXEC。时间(单位为毫秒,平均运行1000次) CPU EXEC。时间(单位为毫秒,平均运行1000次) 模型大小(KB,CNTK格式)
旧实施 9.349 41.921 38
新实施 6.581 9.963 5个
加速/节约近似值 30%近似 65-75%近似 87%

顺序卷积

更新了CNTK中序列卷积的实现。更新后的实现创建单独的顺序卷积层。与规则卷积层不同,该操作还在动态轴(序列)上进行卷积,并将过滤_Shape[0]应用于该轴。更新后的实现支持更广泛的情况,例如序列轴的跨度>1

例如,对一批单通道黑白图像进行顺序卷积。这些图像的高度相同,固定为640,但每个图像的宽度都是可变的。然后,宽度由顺序轴表示。启用填充,宽度和高度的步长均为2

操作员

深度到空间和空间到深度

有一个突破性的变化,那就是深度到空间空间到深度操作员。这些已经更新,以符合ONNX规范,特别是深度维度在空间维度中作为块放置的排列方式,反之亦然。请参考这两个操作的更新文档示例以查看更改

谭恩美和阿坦

添加了对三角运算的支持TanAtan

ELU

添加了对以下各项的支持alphaELU操作中的属性

卷积

更新的自动填充算法Convolution在不影响最终卷积输出值的情况下,在CPU上尽最大努力产生对称填充。此更新增加了MKL API可以覆盖的案例范围,并提高了性能,例如ResNet50

默认参数顺序

有一个突破性的变化,那就是论据属性。默认行为已更新,以Python顺序而不是C++顺序返回参数。这样,它将以与输入到操作中相同的顺序返回参数。如果您仍然希望以C++顺序获取参数,只需覆盖全局选项即可。此更改应仅影响以下操作:Times、TransposeTimes和Gemm(内部)

错误修复

  • 已更新卷积图层的文档,以包括组参数和膨胀参数
  • 添加了改进的分组卷积输入验证
  • 已更新LogSoftMax要使用更稳定的数值实现,请执行以下操作
  • 修复了聚集OP的错误渐变值
  • 添加了对python克隆替换中的“None”节点的验证
  • 添加了卷积中填充通道轴的验证
  • 添加了CNTK本机默认lotusIR记录器,以修复加载某些ONNX型号时出现的“尝试使用DefaultLogger”错误
  • 添加了ONNX TypeStrToProtoMap的正确初始化
  • 更新了python doctest,以处理较新版本号(Version>=1.14)的不同打印格式
  • 当内核中心位于填充的输入单元上时,固定池(CPU)可生成正确的输出值

ONNX

更新

  • 更新了CNTK的ONNX导入/导出以使用ONNX 1.2规范
  • 对如何在导出和导入中处理批次和序列轴进行了重大更新。因此,可以准确地处理复杂场景和边缘情况
  • 更新了CNTK的ONNXBatchNormalizationOP导出/导入到最新规范
  • 将模型域添加到ONNX模型导出
  • 改进了ONNX型号导入和导出期间的错误报告
  • 已更新DepthToSpaceSpaceToDepth操作以匹配ONNX关于如何将深度维度放置为挡路维度的排列规范
  • 添加了对导出的支持alpha中的属性ELUONNX操作
  • 大修是为了ConvolutionPooling导出。与以前不同的是,这些操作不会导出显式Pad在任何情况下都可操作
  • 大修是为了ConvolutionTranspose导出和导入。属性,如output_shapeoutput_padding,以及pads完全支持
  • 添加了对CNTK的支持StopGradient作为一个禁区
  • 添加了对TOPK操作的ONNX支持
  • 添加了对序列操作的ONNX支持:Sequence.Slice、Sequence.first、Sequence.last、Sequence.duce_sum、Sequence.Reduce_max、Sequence.softmax。对于这些操作,不需要扩展ONNX规范。CNTK ONNX Exporter仅为这些序列操作构建计算等效图
  • 添加了对Softmax操作的完全支持
  • 使CNTK广播运营与ONNX规范兼容
  • 在CNTK ONNX导出器中处理TO_BATCH、TO_SEQUENCE、UNPACK_BATCH、Sequence.Unpack工序
  • 用于导出ONNX测试用例以供其他工具箱运行和验证的ONNX测试
  • 固定的Hardmax/Softmax/LogSoftmax导入/导出
  • 添加了对以下各项的支持SelectOP导出
  • 添加了对多个三角运算的导入/导出支持
  • 更新了对ONNX的CNTK支持MatMul操作
  • 更新了对ONNX的CNTK支持Gemm操作
  • 更新了CNTK的ONNXMeanVarianceNormalizationOP导出/导入到最新规范
  • 更新了CNTK的ONNXLayerNormalizationOP导出/导入到最新规范
  • 更新了CNTK的ONNXPReluOP导出/导入到最新规范
  • 更新了CNTK的ONNXGatherOP导出/导入到最新规范
  • 更新了CNTK的ONNXImageScalerOP导出/导入到最新规范
  • 更新了CNTK的ONNXReduce操作导出/导入到最新规范
  • 更新了CNTK的ONNXFlattenOP导出/导入到最新规范
  • 添加了对ONNX的CNTK支持Unsqueeze操作

错误或次要修复:

  • 更新了LRN OP以匹配ONNX 1.2规范,其中size属性具有直径的语义,而不是半径的语义。添加了LRN内核大小大于通道大小时的验证
  • 已更新Min/Max导入实现以处理各种输入
  • 修复了在现有ONNX模型文件上重新保存时可能出现的文件损坏

网络支持

Cntk.Core.Managed库已正式转换为.Net标准,并在Windows和Linux上支持.Net Core和.Net Framework应用程序。从这个版本开始,.NET开发人员应该能够使用新的.Net SDK样式项目文件(包管理格式设置为PackageReference)恢复CNTK Nuget包

下面的C#代码现在可以在Windows和Linux上运行:

例如,只需在.Net Core应用程序的.csproj文件中添加ItemGroup子句就足够了:>netcoreapp2.1>x64>

错误或次要修复:

  • 修复了Linux上C#string和char到本机wstring和wchar UTF转换的问题
  • 修复了代码库中的多字节和宽字符转换
  • 修复了针对.Net标准打包的Nuget包机制
  • 修复了C#API中值类中的内存泄漏问题,其中在对象销毁时不调用Dispose

杂项

2018-04-16CNTK 2.5.1

使用捆绑包中包含的第三方库(Python轮包)重新打包CNTK 2.5


2018-03-15CNTK 2.5

将探查器详细信息输出格式更改为chrome://tracing

启用逐节点计时。工作示例here

  • 启用探查器时,按节点计时会在探查器详细信息中创建项目
  • Python中的用法:
import cntk as C C.debugging.debug.set_node_timing(True) C.debugging.start_profiler() # optional C.debugging.enable_profiler() # optional #<trainer|evaluator|function> executions <trainer|evaluator|function>.print_node_timing() C.debugging.stop_profiler()

中的Profiler详细信息视图示例chrome://tracing

使用MKL提高CPU推理性能

  • 加速用于Float32的英特尔CPU推理中的一些常见张量运算,特别是对于完全连接的网络
  • 可以通过以下方式打开/关闭cntk.cntk_py.enable_cpueval_optimization()/cntk.cntk_py.disable_cpueval_optimization()

1BitSGD并入CNTK

  • 1BitSGD源代码现已随CNTK许可证(MIT许可证)一起在以下位置提供Source/1BitSGD/
  • 1bitsgd生成目标已合并到现有GPU目标中

新的损耗函数:分层Softmax

  • 感谢@耀诚记的贡献!

具有多个学习者的分布式培训

操作员

  • 已添加MeanVarianceNormalization操作员

错误修复

  • 修复了教程201b中的收敛问题
  • 固定的合用/解合,以支持序列的自由维度
  • 修复了中的崩溃CNTKBinaryFormat跨越扫描边界时的反序列化程序
  • 修正了RNN阶跃函数在标量广播中的形状推断错误
  • 修复了在以下情况下的构建错误mpi=no
  • 通过提高打包阈值和暴露V2中的旋钮来提高分布式训练聚合速度
  • 修复了MKL布局中的内存泄漏
  • 修复了中的错误cntk.convertAPI Inmisc.converter.py,这样可以防止将复杂的网络

ONNX

  • 更新
    • CNTK导出的ONNX型号现在ONNX.checker合规
    • 添加了对CNTK的ONNX支持OptimizedRNNStack操作员(仅限LSTM)
    • 添加了对LSTM和GRU运算符的支持
    • 添加了对实验性ONNX操作的支持MeanVarianceNormalization
    • 添加了对实验性ONNX操作的支持Identity
    • 添加了对导出CNTK的支持LayerNormalization使用ONNX的图层MeanVarianceNormalization操作
  • 错误或次要修复:
    • 轴属性在CNTK的ONNX中是可选的Concat操作员
    • 修复标量ONNX广播中的错误
    • 修复ONNX ConvTranspose运算符中的错误
    • 修复向后兼容性错误LeakyReLu(参数“alpha”恢复为双精度类型)

杂项

  • 添加了新的接口find_by_uid()在……下面cntk.logging.graph

2018-02-28CNTK支持夜间构建

如果您更喜欢使用MASTER提供的最新CNTK位,请使用CNTK夜间软件包之一

或者,您也可以单击相应的构建标记以登录到夜间构建页面


2018-01-31CNTK 2.4

亮点:

  • 已移至CUDA9、cuDNN 7和Visual Studio 2017
  • 删除了Python 3.4支持
  • 添加了Volta GPU和FP16支持
  • 更好的ONNX支持
  • CPU性能改进
  • 更多运营

运营部

  • top_k操作:在正向传递中,它计算沿指定轴的顶部(最大)k值和相应的索引。在后向传递中,梯度分散到顶部k个元素(不在顶部k中的元素获得零梯度)
  • gather操作现在支持轴参数
  • squeezeexpand_dims轻松移除和添加单一轴的操作
  • zeros_likeones_like运营部。在许多情况下,您可以仅仅依靠CNTK正确地广播一个简单的0或1,但有时您需要实际的张量
  • depth_to_space:将输入张量中的元素从深度维度重新排列到空间块中。此操作的典型用法是实现某些图像超分辨率模型的亚像素卷积
  • space_to_depth:将输入张量中的元素从空间维度重新排列到深度维度。它在很大程度上与DepthToSpace相反
  • sum操作:创建计算输入张量的元素求和的新函数实例
  • softsign操作:创建计算输入张量的元素软符号的新函数实例
  • asinh操作:创建一个新的函数实例,该实例计算输入张量的逐个元素的asinh
  • log_softmax操作:创建计算输入张量的logsoftmax规格化值的新函数实例
  • hard_sigmoid操作:创建计算输入张量的hard_sigmoid归一化值的新函数实例
  • element_andelement_notelement_orelement_xor基于元素的逻辑运算
  • reduce_l1操作:沿提供的轴计算输入张量元素的L1范数
  • reduce_l2操作:沿提供的轴计算输入张量元素的L2范数
  • reduce_sum_square操作:沿提供的轴计算输入张量元素的平方和
  • image_scaler操作:通过缩放图像的各个值来更改图像

ONNX

  • CNTK中对ONNX支持进行了多项改进
  • 更新
    • 更新的ONNXReshape要处理的操作InferredDimension
    • 添加producer_nameproducer_versionONNX模型的字段
    • 在两个都不是的情况下处理案件auto_pad也不是pads属性在ONNX中指定Conv操作
  • 错误修复
    • 修复了ONNX中的错误PoolingOP序列化
    • 修复错误以创建ONNXInputVariable只有一个批次轴
    • 对ONNX实施的错误修复和更新Transpose操作以匹配更新的规范
    • 对ONNX实施的错误修复和更新ConvConvTranspose,以及Pooling操作以匹配更新的规范

操作员

  • 群卷积
    • 修复了组卷积中的错误。CNTK的输出ConvolutionOP将针对>1的组进行更改。预计在下一版本中将对组卷积进行更优化的实施
    • 更好的分组卷积错误报告Convolution图层

卤化物二元卷积

  • CNTK版本现在可以使用可选Halide要构建的库Cntk.BinaryConvolution.so/dll库,该库可以与netopt模块。该库包含优化的二进制卷积操作符,其性能优于基于Python的二进制卷积操作符。要在内部版本中启用Halide,请下载Halide release并将其设置为HALIDE_PATH开始构建之前的环境变量。在Linux中,您可以使用./configure --with-halide[=directory]来启用它。有关如何使用此功能的详细信息,请参阅How_to_use_network_optimization

有关更多信息,请参阅Release NotesCNTK Releases page

有趣好用的Python教程