基于Theano的DNN框架Blocks使用简要总结

Blocks官方代码地址:https://github.com/mila-udem/blocks Blocks是加拿大Montreal大学Bengio实验室牵头开发的基于Python的神经网络模型框架,可方便地在大规模数据上进行复杂神经网络模型的训练。它包含有很多外置工具包如,logging, monitoring, visualization, and serialization,而Fuel则提供了数据格式的标准化。 Fuel官方代码地址:https://github.com/mila-udem/fuel 由于Blocks仍在进一步开发中,以下说明中遇到的错误可能已被修复,因而只可作为参考[注:当前时间2016/03/01]。 1. 安装Blocks和Fuel: 安装git,git的安装和使用可参考[Bitbucket-团队开发私有库使用指南, http://jacoxu.com/?p=1611] 接下来安装blocks,由于需要通过github下载,进入git bash,输入: pip install git+git://github.com/mila-udem/blocks.git \ -r https://raw.githubusercontent.com/mila-udem/blocks/master/requirements.txt 注:a). 实际运行中,可修改一下requirements.txt文件中所定义的库,如numpy等在安装ANACOND的时候都已经安装,那么可以删除掉requirements.txt文件中对应依赖行。 b). 若执行过程中有错误可能会导致blocks没有正常安装,则需要重新执行一下 pip install git+git://github.com/mila-udem/blocks.git 若安装成功则在c:\anaconda2\lib\site-packages 目录下可以看到和blocks及fuel相关的4个文件夹,并且在在python模式下执行如下两行命令,不报错即可: from blocks.bricks import Tanh from fuel.datasets import MNIST 说明Blocks和Fuel已经可以正常调用。 2. 利用Fuel下载数据集 … 继续阅读

神经记忆网络、神经机器翻译和神经图灵机的初步探讨

近期看过神经记忆网络、神经机器翻译和神经图灵机三篇工作之后在基于对话历史的信息抽取工作上进行了初步对比尝试,根据自己的理解进行了模型对比。欢迎大家一起讨论。 首先三篇工作的文献分别出自: [1] 神经记忆网络:2015 NIPS, End-To-End Memory Networks (Facebook AI) [2] 神经机器翻译:2015 ICLR, Neural Machine Translation by Jointly Learning to Align and Translate [3] 神经图灵机:2014 ArXiv, Neural Turing Machines (Google DeepMind) 其中神经记忆网络和神经机器翻译的模型框图如下: 实验数据:1000轮垂直领域完整对话历史的信息抽取问题 – 神经记忆网络数据格式: 1 小姐 您 怎么 称呼 … 继续阅读

Win7配置Theano环境,附Ubuntu+TensorFlow安装

可参考Windows安装Theano官方教程: http://deeplearning.net/software/theano/install_windows.html#install-windows 但是内容太多,不看也罢,很多软件已经不需要配置,或者是冗余的。如果你恰好和我一样都是Windows系统,Nvidia带GPU显卡,且你安装的时间离现在2016/02/03的日子还比较近,那么按照下面的顺序装机吧: 1. 安装Nvidia显卡驱动,官网: http://www.nvidia.cn/Download/index.aspx?lang=cn 2. 安装Visual_Studio: https://www.visualstudio.com/ 3. 安装JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html 4. 安装CUDA 使用GPU加速(选择自己的配置,如Windows – x86_64-7-local) https://developer.nvidia.com/cuda-downloads 5. 安装ANACOND可以免去安装很多Python库的麻烦: https://www.continuum.io/downloads#_windows 6. Python IDE: PyCharm: http://www.jetbrains.com/pycharm/download/#section=windows 7. 配置G++ 官网给的建议是安装TDM-GCC(http://tdm-gcc.tdragon.net/),但是我安装之后出现g++加载错误,不确定是不是版本不匹配的问题。在参考博文(http://blog.sina.com.cn/s/blog_96b836170102vq22.html)中提到可以安装MinGW解决g++问题,解决方案为:在cmd输入:conda install mingw libpython,MinGW等文件夹会自动装到anaconda下面。 8. 安装Theano https://github.com/Theano/Theano/archive/master.zip 解压,进入目录在命令行中执行“python setup.py develop” 9. 配置GPU和G++编译环境:创建文件C:\Users\jacoxu\.theanorc,内容如下: … 继续阅读

思考一下Memory的形式

【声明】:如下观点均是个人鄙见,尽可能地引出论文出处,有待同大家一起讨论商榷。 【一】. 2015-ICLR-《Neural Machine Translation by Jointly Learning to Align and Translate》 【二】. 2015-ACL-《Neural Responding Machine for Short-Text Conversation》 【三】. 2015-ICLR-《Memory Networks》 序,统一概念: 句子中的词向量化表示 和 段落中的句子向量化表示 意思逻辑一致。【1,2】两篇文章均是在句子层面的,因而采用句子/词 的表示方法,而在【3】QA系统应用中 对应为 段落/句子。 论文【一】观点: 应用领域:机器翻译系统。 1.1    输入端所有输入文本信息都压缩到固定长度的向量的方法是错误的; 原因:句子较长时,即输入信息较多时,解码能力变差,即模型解析能力变弱。(摘自【原文P1第三段】A potential issue with this encoder–decoder … 继续阅读

RAM与QA相关文章资源列表

RAM并非Random-Access Memory,而是DL领域时下热门的Reasoning, Attention, Memory。NIPS2015将于12月5日组织一个RAM (Reasoning, Attention, Memory) workshop,组织方则是Facebook AI Research的Jason Weston (Memory Networks作者) ,Reference列表中的文章都挺不错,近日查阅了几篇QA相关的文章及资源整理如下。整理粗糙,望谅解。文章列表从近日最新的工作往前开始追溯: (如下文章中引用率出自Google scholar-2015/11/02) [1]. 《Empirical Study on Deep Learning Models for QA》 时间:2015/10/26,单位:US IBM Watson,作者:Yang Yu 数据集:Facebook’s bAbI (问答系统) 动机:深入探究Memory组件和Attention机制在解决QA问题中的应用。虽然之前的文章中有提及很相关的工作神经图灵机(NTM,Neural Turing Machine)和神经机器翻译(NMT,Neural Machine Translation)模型,且很多工作已经采用机器翻译模型解决QA任务,但并没有论文采用NMT和NTM解决QA问题。因而本文在Facebook的人工构造QA数据集上融合并对比了当下热门三种DL方法:Neural Machine Translation,Neural Turing … 继续阅读

libSVM多类别概率输出问题

在libsvm模型进行预测时predict返回的三个参数分别为: -predicted_label:第一个返回值 nx1,表示样本的预测类标号; -accuracy:第二个返回值,1×1,表示分类的正确率; -prob_estimates:第三个返回值,nxk,每一行表示这个样本分别属于每一个类别的概率。 然而,坑来了。。。。 您的程序中所返回的第三个参数中的概率顺序极有可能并不是按照真实的类别0-(k-1)的类别排序的。 注意,是可能。因为大部分情况是正常的,因而查询了很多也没注意到相关介绍,最后在 [这里] 看到相同情况。 此时,才留意到,其实predict返回的概率结果排序是按照标签的输入顺序依次排序的,因而前面的标签会排在前面。 此时可通过model.Label将标签顺序打印出来,并根据此进行重排序 [label,rOrder] = sort(model.Label); predict_scoresR = predict_scores(:,rOrder); 得到正确的顺序 predict_scoresR.

JAVA基于正则表达式的模糊替换

示例: 输入字符串:黄家驹 alias KaKuiWong(英)Koma(日)、黄伯、黑仔、四眼仔 输出字符串:黄家驹 alias KaKuiWong、Koma、黄伯、黑仔、四眼仔 代码: String inputStr = inputStr.replaceAll(“\\((.)\\)”, “、”); 有时候我们需要对括号内部的长度进行限制,如只有长度在5以内才被判断为后缀信息,若长度很长,则可能是内容信息: 代码: String inputStr = inputStr.replaceAll(“\\((.{0,5})\\)”, “、”);

对HashMap中的Value或Key进行排序

以下函数段功能,对Map结构变量tagStatMap以Value为标准进行排序,然后存放到tagInfoList结构中。 //开始对Tag进行排序    List<Map.Entry<String, Integer>> tagInfoList =            new ArrayList<Map.Entry<String, Integer>>(tagStatMap.entrySet());    Collections.sort(tagInfoList, new Comparator<Map.Entry<String, Integer>>() {           @Override   public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {                  return (o2.getValue() - o1.getValue());             //return (o1.getKey()).toString().compareTo(o2.getKey());        }    });     for (int i = 0; i < tagInfoList.size(); i++) {        String tagStr = tagInfoList.get(i).getKey();        int tagFrq = tagInfoList.get(i).getValue();        tagStaticsWriter.write(tagFrq+“<->”+tagStr+“\n”);                    }