解决Ubuntu下pip3安装TA-Lib失败的问题


在ubuntu系统下安装TA-Lib遇到了如下问题:

talib/_ta_lib.c:526:28: fatal error: ta-lib/ta_defs.h: No such file or directory

解决办法:

wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -zxf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
./configure --prefix=/usr
make
sudo make install
pip3 install ta-lib

即可~

阅读全文 »


解决Python bottle module Error: 413 Request Entity Too Large问题


服务器使用了bottle,通过http的post方法上传图片,收到如下错误:

Error: 413 Request Entity Too Large

解决的办法就是修改文件的大小上限:

import bottle
bottle.BaseRequest.MEMFILE_MAX = 1024 * 1024 # (or whatever you want)

即可

阅读全文 »


解决urllib3.exceptions.ProtocolError问题


今天在用requests的post方法上传图片时出现如下问题:

urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))

原因是urllib3的版本问题。

使用:

pip install git+https://github.com/shazow/urllib3

即可

阅读全文 »


github中遇到>100MB文件的解决办法


今天在GitHub上传文件时遇到文件大于>100MB文件的错误,如下:

GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.

因GitHub不支持大于100MB文件的问题,解决的办法就是从commit中移除该文件:

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch >100MB_file_name'

运行之后再继续执行git push即可。

阅读全文 »


[翻译]2018年深度学习主要进展


原文:链接


在过去的多年里,深度学习已经发生了天翻地覆的变化.每天都有各种基于深度学习技术的产品出现:保健、金融、人力资源、零售、地震预测以及自动驾驶。而已经应用的产品性能也在提高。

在学术界,有关深度学习的论文每20分钟就有一篇生成。

本文将介绍深度学习在2018年的主要进展。像去年的那篇一样(译者注:去年刚好也翻译了这篇),本文没法详细的介绍每个成果。所以这里只介绍一些印象深刻的成果。

语言模型:Google的BERT模型

在自然语言处理领域,语言模型用来估计语言单元(linguistic units)的概率分布,典型的如一句话中的词。这些模型可以提升很多NLP任务的效果,比如机器翻译、语音识别、依存分析。 历史上最著名的语言模型是基于马尔可夫模型和n-gram语言模型。随着深度学习的发展,LSTM网络为语言模型带来了极大的提升。尽管效果已经不错,但是现有的模型是非双向的,这就意味着只考虑到了单词的左(或者右)方向上的上下文。 过去的十月份,Google AI语言组发布的一篇论文在NLP社区引起了轰动。他们提出的BERT模型是一种新的双向语言模型哦那个,在多个NLP任务中取得了最好的结果,包括情感分析、QA、语义检测。

GLUE测试集上的结果.

与传统的从左到右或者从右到左的语言模型策略不同,BERT的预训练策略如下:

  • 将部分输入的token设置为掩码,然后预测这些掩码处的token;这就表示在多层上下文中可以简介的”看见这些token”.

  • 建立一个二元分类模型预测句子B是否跟在句子A后面,这表示模型学习到了句子间的关系,这是传统语言模型直接学习不到的现象。

Google开源了BERT的Tensorflow代码,Pytorch版本的代码也有不同的实现:Thomas WolfJunseong Kim.

BERT对于商业应用提供了极大的提升,不管是机器翻译,还是chatbot,还包括邮件自动回复,用户评价分析。

Video-to-video Synthesis

我们都习惯由图形引擎创建的虚拟器或视频游戏的交互环境。虽然有声有色,但是传统的方法成本较高,因为场景的集合、材料、光照以及其他的参数必须要详细的设定。一个很好的思路就是:如何利用比如深度学习这样的技术自动化的构建这些环境。

在论文video-to-video synthesis中,英伟达的研究人员尝试解决这个问题。简单的说他们的目标就是构建将输入视频映射到真实的准确描述输入内容的输出视频的函数。作者将这个问题建模为自动创建的视频的条件分布与最终的视频的条件分布的分布匹配问题。为了达到这个目标,他们使用GAN创建该模型。这个方法的关键是,生成的合成数据不能被判别器分辨出为假的。他们定义了一个时空学习目标方程,旨在生成时空一致性的视频

生成的结果特别的令人惊喜,如下图所示:

Video-to-video synthesis.

左上是Cityscapes数据集中的街景语义分割视频。作者还与两个baseline进行了对比: pix2pixHD (右上) 和COVST (左下).

该方法可以应用到多个任务重,比如用于视频人脸交换的草图到视频生成。下面的视频,从左到右,先是由原视视频生成草图,然后由草图生成合成视频。

视频合成之换脸.

本方法甚至可以应用于预测未来视频;先给定一些现有视频,然后预测之后的视频,也得到令人惊喜的结果。 此外,英伟达开源了vid2vid代码

Improving word embeddings

去年已经介绍了词嵌入对于NLP的重要性,在不久的将来将会得到更多的关注。大家对于King - Man + Woman = Queen这种转换关系已经变得不像当初那么兴奋了,而这在实践中也有很多的限制。最重要的是无法解决一次多亿以及不能准确的建立词之间的关系。同义词?下义词?另一个限制就是形态学上的关系:词嵌入不能分辨driver和driving在形态学上的关系。

正如标题显示的一样, Deep contextualized word representations (NAACL 2018的优秀论文), Allen Institute for Artificial Intelligence以及 the Paul G. Allen School of Computer Science & Engineering提出了一种新的深度上下文词表征方式,模拟了词使用的复杂特征(比如语法和语义),以及在语言间的上下文的使用变化(比如多义)。

核心的思路从语言模型中获取词嵌入,即Embeddings from Language Models (ELMo),就是指用整句或者整个上下文对词进行向量化。为了实现这个目标,作者首先使用大量的语料训练了一个双向语言模型。此外,因为这个语言模型是基于字母的,因而单词之间的形态学关系也能得到。所以,这个模型能够很好的处理从未出现过的情形,比如字典外的词。

6个测试集上的结果对比.

作者通过简单的添加ELMo到当前的一些先进的方法中就能在很多NLP任务重获得更好的结果,比如文本蕴含,指代消解,QA。ELMo对Google的BERT有很大的贡献,相信能对一些商业应用能有更好的促进。

可视化任务之间的结构化关系

视觉任务之间有关联吗?这个问题由斯坦福和伯克利大学的研究人员在Taskonomy: Disentangling Task Transfer Learning中做了回答。该文获得 CVPR 2018最佳论文

毫无疑问,很多视觉任务之间存在关联。比如说知道物体的表面特征能够帮助对图片进行深度估计。在这种场景下,迁移技术或者使用监督学习的结果是很有用的。

作者提出了一种计算方法建立26种常见视觉任务之间通过迁移学习建立依赖结构,包括物体识别、边缘检测、深度估计。

A sample task structure discovered by the computational task taxonomy.

正如上图展示的一样,如果联合表面检测和边缘检测,则阴影和点的匹配模型只需要少量的标注数据就能得到。

这项工作的一个主要的贡献就是证明了少量的标注数据通过迁移学习可以减少2/3左右的标注工作量。这对于商业应用来说非常重要。

文本分类中微调的全局语言模型

深度学习模型对于NLP领域的促进非常巨大,很多NLP任务的先进结果都是利用的深度学习模型。然而,这些模型都需要构建大量的数据并耗费大量的时间进行训练。

Howard and Ruder的工作提供了一种利用Universal Language Model Fine-tuning (ULMFiT)的迁移学习的方法。主要的思路就是微调已经训练好的语言模型。这种巧妙的方法能够使得我们可以使用少量的标注数据就可以对其他任务进行探索。

模型的错误率.

他们的方法在6个文本分类任务上取得最好的结果,减少错误率18-24%.对于训练数据的数量,结果也是惊人的:他们的方法使用100个标注数据和50k非标注数据,而从0开始训练的模型是10k标注数据。但是他们的方法却取得一样的结果。

他们的结果表明迁移学习在NLP领域非常值得去研究的。想要了解细节可以参考代码

总结

今年深度学习的技术继续得到广泛的应用。尤其迁移学习得到了越来越多的关注,从战略的角度来看这是今年最好成果。希望这个趋势能够得到持续。

另外还有一些没有在文章中列出来的进展依然值得关注,比如OpenAI Five在DOTA2中击败了职业玩家。另外spherical CNN PatternNet and PatternAttribution在CNN的可解释性上的工作也值得关注。

从商业的角度来说,上述突破在商业应用上的促进作用是可以预见的,比如机器翻译、健康诊断、聊天机器人、仓储管理、自动邮件回复、人脸识别、用户评价分析等。

从学术的角度来说,Deep Learning: A Critical Appraisal 对深度学习的综述值得品读。该文清晰的指出了当前深度学习的不足指出,并且提出深度学习需要借助认知和发展心理学、符号科学和混合建模等学科的发展。

参考文献

Spherical CNNs. Taco S. Cohen, Mario Geiger, Jonas Koehler, and Max Welling.

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova.

Universal Language Model Fine-tuning for Text Classification. Jeremy Howard and Sebastian Ruder.

Learning how to explain neural networks: PatternNet and PatternAttribution. Pieter-Jan Kindermans, Kristof T. Schütt, Maximilian Alber, Klaus-Robert Müller, Dumitru Erhan, Been Kim, and Sven Dähne.

Deep Learning: A Critical Appraisal. Gary Marcus.

Deep contextualized word representations. Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matt Gardner, Christopher Clark, Kenton Lee, and Luke Zettlemoyer.

GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding. Alex Wang, Amanpreet Singh, Julian Michael, Felix Hill, Omer Levy, and Samuel R. Bowman.

Video-to-Video Synthesis. Ting-Chun Wang, Ming-Yu Liu, Jun-Yan Zhu, Guilin Liu, Andrew Tao, Jan Kautz, and Bryan Catanzaro.

Taskonomy: Disentangling Task Transfer Learning. Amir Zamir, Alexander Sax, William Shen, Leonidas Guibas, Jitendra Malik, and Silvio Savarese.

阅读全文 »


ubuntu中安装google protobuf


安装

$ sudo apt-get install autoconf automake libtool curl make g++ unzip
$ git clone https://github.com/protocolbuffers/protobuf.git
$ cd protobuf
$ git submodule update --init --recursive
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig # refresh shared library cache.

阅读全文 »


pip install ocurrs locale.Error: unsupported locale setting


问题如题所述,解决方案执行下面的命令即可:

export LC_ALL=C

阅读全文 »


fatal error:opencv2/highgui/highgui_c.h:No such file or directory


在编译yolo v3的时候遇到错误:

include/darknet.h:25:43: fatal error: opencv2/highgui/highgui_c.h: No such file or directory

但已经通过conda安装了opencv了

想想应该是有的系统lib之类的没装,解决办法如下,命令行执行:

sudo apt-get install libopencv-dev

即可

阅读全文 »