Github 项目推荐 | 基于 PyTorch,面向 AI 系统加速研究与开发的深度学习框架

TorchFusion 是一个深度学习框架,主要用于 AI 系统加速研究和开发。

TorchFusion 基于 PyTorch 并且完全兼容纯 PyTorch 和其他 PyTorch 软件包,它供了一个全面的可扩展训练框架,可以轻松用开发者的 PyTorch 模型进行训练,评估和运行推理。

该框架具有高度可扩展性,所以开发者可以根据自己特定的目的来进行训练。

Github 链接:

https://github.com/johnolafenwa/TorchFusion

独特功能

  • 高度可扩展
  • 高度详细的汇总功能,不仅为您提供了有关参数,层数,输入和输出大小的详细信息,还为网络中的每个线性和卷积层提供了Flops(Multiply-Adds)的数量。 现在,只需一个功能就可以知道任何CNN架构的确切计算成本!
  • 实时指标和损失可视化,并可选择永久保存它们
  • 支持永久保存日志
  • 易于使用的回调

注意:这只是 TorchFusion 的预发布版本,未来的 TorchFusion 将会跨越更多的深度学习领域。

安装

安装 TorchFusion

pip3 install https://github.com/johnolafenwa/TorchFusion/releases/download/0.1.1/torchfusion-0.1.1-py3-none-any.whl

在 Windows 上安装 PyTorch:

https://pytorch.org/

CPU Only

With Python 3.6

pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.0-cp36-cp36m-win_amd64.whl torchvision

With Python 3.5

pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.0-cp35-cp35m-win_amd64.whl torchvision

CUDA 支持

With Python 3.6

pip3 install http://download.pytorch.org/whl/cu80/torch-0.4.0-cp36-cp36m-win_amd64.whl torchvision

With Python 3.5

pip3 install http://download.pytorch.org/whl/cu80/torch-0.4.0-cp35-cp35m-win_amd64.whl

在 Linux 上安装 PyTorch:

https://pytorch.org/

CPU Only

With Python 3.6

pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.0-cp36-cp36m-linux_x86_64.whl  torchvision

With Python 3.5

pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.0-cp35-cp35m-linux_x86_64.whl torchvision

CUDA 支持

pip3 install torch  torchvision

在 OSX 上安装 PyTorch:

https://pytorch.org/

CPU Only

pip3 install torch  torchvision

MNIST in Five Minutes

import torchfusion as tf
from torchvision.datasets.mnist import MNIST
from torch.utils.data import DataLoader
from torchvision.transforms import transforms
import torch.nn as nn
from torch.optim import Adam
import torch.cuda as cuda

#Define a the classifier network
net = nn.Sequential(
            tf.Flatten(),
            nn.Linear(784, 100),
            nn.ReLU(),
            nn.Linear(100, 100),
            nn.ReLU(),
            nn.Linear(100, 100),
            nn.ReLU(),
            nn.Linear(100, 10)
)
batch_size = 64

#Transformations and data augmentation
transformations = transforms.Compose([
    transforms.Resize(28),
    transforms.ToTensor(),
    transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))
])

#Load the training and test sets
train_set = MNIST(root="./data",transform=transformations,download=True)
test_set = MNIST(root="./data",train=False,transform=transformations,download=True)

train_loader = DataLoader(train_set,shuffle=True,batch_size=batch_size,num_workers=4)
test_loader = DataLoader(test_set,shuffle=False,batch_size=batch_size,num_workers=4)

#Move to GPU if available
if cuda.is_available():
    net.cuda()

#Setup the optimize and a loss function
optimizer = Adam(net.parameters(),lr=0.001)
loss_fn = nn.CrossEntropyLoss()

#Top 1 Train accuracy
train_metrics = tf.Accuracy(topK=1)

#Top 1 and Top 2 test accuracy
test_metrics_top1 = tf.Accuracy(name="Top 1 Acc ",topK=1)
test_metrics_top2 = tf.Accuracy(name="Top 2 Acc ",topK=2)

#Create an instance of the StandardModel
model = tf.StandardModel(net)

def train():
    #print a summary of the network
    print(model.summary((1,28,28)))
    model.train(train_loader, loss_fn, optimizer, [train_metrics], test_loader,
                [test_metrics_top1, test_metrics_top2], num_epochs=20,
                model_dir="mnist_mlp_saved_models",save_logs="logs.txt")


if __name__ == "__main__":
    train()

GAN in Five Minutes

import torchfusion.gan as tfgan
from torchvision.datasets import MNIST
from torchvision.transforms import transforms
from torch.optim import Adam
from torch.utils.data import DataLoader
import torch.nn as nn
import torch.cuda as cuda

#Transformations and data augmentation
train_transformations = transforms.Compose([
    transforms.Resize(28),
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

batch_size = 64

# Load the training set
train_set = MNIST(root="./data", train=True, transform=train_transformations, download=True)

train_data = DataLoader(train_set,batch_size=batch_size,shuffle=True,num_workers=4)

#Create an instance of the NormalDistribution
source = tfgan.NormalDistribution(length=len(train_set),size=(100))
source_data = DataLoader(source,batch_size=batch_size,shuffle=True,num_workers=4)

#Create an instance of the Generator and Discriminator
G = tfgan.MLPGenerator(latent_size=100,output_size=(1,28,28))
D = tfgan.MLPDiscriminator(input_size=(1,28,28))

#Move the networks to GPU if available
if cuda.is_available():
    G.cuda()
    D.cuda()

#Setup the optimizers
g_optim = Adam(G.parameters(),lr=0.0002,betas=(0.5,0.999))
d_optim = Adam(D.parameters(),lr=0.0002,betas=(0.5,0.999))

#Define the loss function
loss_fn = nn.BCELoss()

if __name__ == "__main__":
    #Create an instance of the StandardGANModel
    trainer = tfgan.StandardGANModel(G,D,gen_loss_fn=loss_fn,disc_loss_fn=loss_fn)
    #Train the two models
    trainer.train(train_data,source_data,g_optim,d_optim,num_epochs=200,disc_steps=1,save_interval=3000)

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏每日一篇技术文章

学习音视频解码你应该知道的东西

查看详细的视频编码介绍请访问视频编码 我们重点研究一下 H.26X 系列 特点:侧重网络传输 包括:H.261、H.262、H.263、H.263+、H....

2902
来自专栏华章科技

核心算法:谷歌如何从网络的大海里捞到针

作 者: David Austin,Grand Valley State University

1118
来自专栏python开发者

字符型图片验证码识别完整过程及Python实现

验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻。本文介绍了一...

2.3K8
来自专栏MelonTeam专栏

一种用于短文本的神经响应机

导语 这篇文章是翻译别人的,来源是https://arxiv.org/abs/1503.02364 摘要 我们提出了神经响应机(NRM),一种基于...

1968
来自专栏大数据文摘

手把手 | 如何用Python做自动化特征工程

机器学习的模型训练越来越自动化,但特征工程还是一个漫长的手动过程,依赖于专业的领域知识,直觉和数据处理。而特征选取恰恰是机器学习重要的先期步骤,虽然不如模型训练...

1.4K1
来自专栏ml

faster-rcnn中ROI_POOIING层的解读

在没有出现sppnet之前,RCNN使用corp和warp来对图片进行大小调整,这种操作会造成图片信息失真和信息丢失。sppnet这个模型推出来之后(关于这个网...

5089
来自专栏编程

python验证码识别实战

陆陆续续的学习了验证码的灰度、二值化、分割等方法,还了解了机器学习中最基本的3个分类方式——KNN、决策树、朴素贝叶斯。基于这些,今天结合这些工具来写一个简单的...

4096
来自专栏量子位

AI跟Bob Ross学画画,杂乱色块秒变风景油画 | PyTorch教程+代码

王新民 编译整理 量子位 出品 | 公众号 QbitAI 正在研究机器学习的全栈码农Dendrick Tan在博客上发布了一份教程+代码:用PyTorch实现将...

3765
来自专栏章鱼的慢慢技术路

解救小哈——DFS算法举例

2768
来自专栏新智元

【AI可能真的要代替插画师了】复旦同济用cGAN生成动画人物

【新智元导读】复旦大学、同济、CMU等的研究者使用cGAN生成各种属性的二次元人物头像,效果非常令人印象深刻。生成的图片质量非常之高,本文作者认为这项工作如果加...

4765

扫码关注云+社区

领取腾讯云代金券