zoukankan      html  css  js  c++  java
  • 使用MXNet远程编写卷积神经网络用于多标签分类

    最近试试深度学习能做点什么事情。MXNet是一个与Tensorflow类似的开源深度学习框架,在GPU显存利用率上效率高,比起Tensorflow显著节约显存,并且天生支持分布式深度学习,单机多卡、多机多卡支持丰富,拥有着良好的技术架构。目前是亚马逊AWS的官方深度学习框架。由于其团队以MXNet产品本身为先,所以文档资料较少。现在还稍微多了一点。

    1. 搭建Jupyter notebook远程开发环境

    Jupyter notebook支持python、R、shell等等,功能非常全面。基于Jupyter notebook,我在实验室的K80 GPUs服务器上搭建MXNet环境(搭建步骤见官网,很简单,131上已装好),然后利用SSH隧道传输,可以随时随地在浏览器里编程,使代码加速运行在K80 GPUs设备上。

    Step-by-step教程见博客:http://www.cnblogs.com/shixiangwan/p/6406777.html

    2. 卷积神经网络(CNN)

    CNN较适合于矩阵特征,例如图像分类,目标检测。生物信息学方面,蛋白质的二级结构预测也有相关paper,牛津出版社的《Deep learning in bioinformatics》叙述很详细:
    [attachimg]3437[/attachimg]

    当然,CNN也是非常基础的,目前还有RNN(递归神经网络),LSTM(长短记忆网络,NLP和speech领域居多),残差网络(更深且快的卷积网络),GAN(生成对抗网络,亦有很多衍生结构)等等,技术更迭非常之快,一个比较好的书籍是《Deep Learning》,Github上有民间中文版。

    对于一些多标签分类任务,想方法把特征做成矩阵形式,也可以利用CNN做分类。这里我写了个试验性程序来证明CNN比传统的多层感知机要优秀些。

    数据描述:特征是14489个、34维;标签是14489个、42维。
    程序试验:数据直接进入CNN肯定过拟合,于是我将每个特征复制34份形成34*34矩阵(这样做是不对的,只是先跑通CNN)。训练集:验证集:测试集=8:1:1,然后接入普通的卷积网络,用测试集看最终结果。
    结果描述:准确率96.5%,这个计算方式是14489*0.1*42=60858个测试样本标签中,有58723个分对的。

    源码及运行运行过程输出见:https://github.com/ShixiangWan/MXNet-Bioinformatics/blob/master/protein.ipynb
    源码及数据见:https://github.com/ShixiangWan/MXNet-Bioinformatics


    程序运行需要(131全都有):
    1. MXNet环境
    2. Python 2.7环境,numpy包

  • 相关阅读:
    POJ 3304 计算几何 直线与线段相交
    POJ 2653 计算几何 判断线段相交
    POJ 1066 计算几何 线段相交
    关于git的一些有用的链接
    Cloudera是个什么东西
    Data Structure for phone book
    向大家推荐一个C/C++通用Makefile
    关于gcc/g++的include路径和其他一些路径问题
    volatile 和 sig_atomic_t
    分布式文件系统虚拟目录及命名空间的实现方法
  • 原文地址:https://www.cnblogs.com/shixiangwan/p/6550456.html
Copyright © 2011-2022 走看看