专栏首页Python数据科学最新深度学习合集:GitHub趋势排行第一位,仅两天斩获2000+Star!

最新深度学习合集:GitHub趋势排行第一位,仅两天斩获2000+Star!

作者:Sabastian Raschka

编辑:Python数据科学

国外大佬 Sabastian Raschka (威斯康星大学统计学助理教授、《Python of Machine Learning》 作者)最近在 GitHub 上创建了一个深度学习模型的项目。项目主要收集了深度学习的多种模型、架构和注意事项。

该项目发布两天即获得了 2000 多星,目前在 GitHub Trending 上名列第一,所有代码均在Jupyter notebook上实现,Python版本使用3.7,配合作者的注释和原创笔记讲解,对于深度学习爱好者和学习者是非常好的入门学习材料。

项目地址:https://github.com/rasbt/deeplearning-models

目录

该项目的目录如下:

  • 传统机器学习
  • 多层感知机
  • 卷积神经网络(CNN)
  • 度量学习(Metric Learning)
  • 自编码器
  • 生成对抗网络(GAN)
  • 循环神经网络(RNN)
  • 有序回归
  • 技巧和窍门
  • PyTorch 工作流和机制
  • TensorFlow 工作流和机制

传统机器学习

Perceptron的Tensorflow 部分代码实现如下:

import numpy as np

data = np.genfromtxt('../../ch02_perceptron/perceptron_toydata.txt', delimiter='\t')
X, y = data[:, :2], data[:, 2]
y = y.astype(np.int)

print('Class label counts:', np.bincount(y))
print('X.shape:', X.shape)
print('y.shape:', y.shape)

# Shuffling & train/test split
shuffle_idx = np.arange(y.shape[0])
shuffle_rng = np.random.RandomState(123)
shuffle_rng.shuffle(shuffle_idx)
X, y = X[shuffle_idx], y[shuffle_idx]

X_train, X_test = X[shuffle_idx[:70]], X[shuffle_idx[70:]]
y_train, y_test = y[shuffle_idx[:70]], y[shuffle_idx[70:]]

# Normalize (mean zero, unit variance)
mu, sigma = X_train.mean(axis=0), X_train.std(axis=0)
X_train = (X_train - mu) / sigma
X_test = (X_test - mu) / sigma
import matplotlib.pyplot as plt
%matplotlib inline

plt.scatter(X_train[y_train==0, 0], X_train[y_train==0, 1], label='class 0', marker='o')
plt.scatter(X_train[y_train==1, 0], X_train[y_train==1, 1], label='class 1', marker='s')
plt.xlabel('feature 1')
plt.ylabel('feature 2')
plt.legend()
plt.show()

多层感知机

卷积神经网络

比如,用Pytorch实现实现带有跳跃式连接的residual blocks,这样通过shortcut的输入可与主路径输出的维度匹配,从而允许网络学习标识功能。

代码实现如下所示:

class ConvNet(torch.nn.Module):

    def __init__(self, num_classes):
        super(ConvNet, self).__init__()

        #########################
        ### 1st residual block
        #########################
        # 28x28x1 => 28x28x4
        self.conv_1 = torch.nn.Conv2d(in_channels=1,
                                      out_channels=4,
                                      kernel_size=(1, 1),
                                      stride=(1, 1),
                                      padding=0)
        self.conv_1_bn = torch.nn.BatchNorm2d(4)

        # 28x28x4 => 28x28x1
        self.conv_2 = torch.nn.Conv2d(in_channels=4,
                                      out_channels=1,
                                      kernel_size=(3, 3),
                                      stride=(1, 1),
                                      padding=1)   
        self.conv_2_bn = torch.nn.BatchNorm2d(1)


        #########################
        ### 2nd residual block
        #########################
        # 28x28x1 => 28x28x4
        self.conv_3 = torch.nn.Conv2d(in_channels=1,
                                      out_channels=4,
                                      kernel_size=(1, 1),
                                      stride=(1, 1),
                                      padding=0)
        self.conv_3_bn = torch.nn.BatchNorm2d(4)

        # 28x28x4 => 28x28x1
        self.conv_4 = torch.nn.Conv2d(in_channels=4,
                                      out_channels=1,
                                      kernel_size=(3, 3),
                                      stride=(1, 1),
                                      padding=1)   
        self.conv_4_bn = torch.nn.BatchNorm2d(1)

        #########################
        ### Fully connected
        #########################        
        self.linear_1 = torch.nn.Linear(28*28*1, num_classes)


    def forward(self, x):

        #########################
        ### 1st residual block
        #########################
        shortcut = x

        out = self.conv_1(x)
        out = self.conv_1_bn(out)
        out = F.relu(out)

        out = self.conv_2(out)
        out = self.conv_2_bn(out)

        out += shortcut
        out = F.relu(out)

        #########################
        ### 2nd residual block
        #########################

        shortcut = out

        out = self.conv_3(out)
        out = self.conv_3_bn(out)
        out = F.relu(out)

        out = self.conv_4(out)
        out = self.conv_4_bn(out)

        out += shortcut
        out = F.relu(out)

        #########################
        ### Fully connected
        #########################   
        logits = self.linear_1(out.view(-1, 28*28*1))
        probas = F.softmax(logits, dim=1)
        return logits, probas


torch.manual_seed(random_seed)
model = ConvNet(num_classes=num_classes)
model = model.to(device)

optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

自动编码器

生成对抗网络(GANs)

循环神经网络(RNNs)

PyTorch 和 TensorFlow 的工作流和机制

最后介绍了 PyTorch 和 TensorFlow 的工作流和机制,涉及数据集、训练和预处理等内容。

比如,Parallel Computing 部分,将多个CPUs与DataParallel结合使用,作者讲解的原理图如下:

项目地址:https://github.com/rasbt/deeplearning-models

本文分享自微信公众号 - Python数据科学(PyDataScience)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-08

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【TensorFlow】TensorFlow 的线性回归

    前面 有篇博文 讲了讲Ubuntu环境下安装TensorFlow,今天来说一说在TensorFlow中如何进行线性回归。

    Alan Lee
  • 【TensorFlow】TensorFlow 的卷积神经网络 CNN - TensorBoard 版

    前面 写了一篇用 TensorFlow 实现 CNN 的文章,没有实现 TensorBoard,这篇来加上 TensorBoard 的实现,代码可以从 这里 下...

    Alan Lee
  • tensorflow-gpu安装及问题解决

    最近需要用GPU来进行tensorflow进行训练,发现需要安装cuda 9.0版本才可以,因为tensorflow默认的就是cuda 9.0,为了减少...

    sparkexpert
  • 百折不挠,终于装好「TensorFlow」

    此文为交流群「TensorFlow群」呵呵哒贡献,自己在win10中安装时踩过的坑,希望还被这些问题困扰的小伙伴,看完此文后能豁然开朗,同时没有安装过的以后可能...

    double
  • 3.2 详解优化器的选择

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年
  • 3.1 学习率(learning rate)的选择

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年
  • 双精度,单精度和半精度

    浮点数是计算机上最常用的数据类型之一,有些语言甚至数值只有浮点型(Perl,Lua同学别跑,说的就是你)。

    用户1148523
  • TensorFLow基础:使用TensorBoard进行可视化学习

    TensorFlow涉及到的运算,往往是在训练庞大的神经网络过程中出现的复杂且难以理解的运算,为了方便对程序进行理解、调试和优化,tensorflow提供...

    Steve Wang
  • Ubuntu 16.04 Cuda8.0 tensorflow-gpu

    ubuntu 16.04 python 2.7 cuda7.5/Cuda8.0 tensorflow-gpu

    ke1th
  • 2.2 TensorFlow变量管理

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年

扫码关注云+社区

领取腾讯云代金券