[原创] 在Ubuntu 14.04中安装gcc 6

成功编译ELL对gcc版本有要求,这而这一点在ELL的文档中并没有写。
gcc版本太低了是不行的,那么什么算版本低?反正我的gcc 4.8.4是不work的——使用低版本的gcc,你也可以照着文档完成很多步骤,但是到最后某一步,一定会遇到由于gcc版本低导致的问题,并且还没有直观的错误提示,查找问题源头可能会浪费你很多时间。

阅读更多

[原创] 升级Ubuntu 14.04上的Open MPI到 libmpi.so.12 版本

好好的为什么要折腾这个事?说来也是郁闷,在测试ELL的过程中,遇到了一个Open MPI package依赖的问题,它要用到 libmpi.so.12 这个动态链接库对应版本的Open MPI,而Ubuntu 14.04系统上,用 apt-get install libopenmpi-dev 安装上的是很旧的版本,因此只能升级系统里已经安装的Open MPI了。

阅读更多

[原创] Java Hadoop job合并输入的小文件(纯文本)

假设你的JAVA M-R job的输入文件是大量纯文本文件,而且每个文件都比较小(例如几百K),那么job运行起来之后会占用大量mapper数,导致Hadoop集群资源被过度消耗。这种情况可以通过合并输入文件来避免。

阅读更多

[原创] 为nginx服务器网站添加HTTPS/配置SSL证书

网站使用HTTPS的好处就不用多说了,在当今凶险的互联网环境下,使用HTTP越来越不安全,所以我也决定把网站转成HTTPS。使用HTTPS,首先你需要有一张SSL证书。
曾经,收费的SSL证书很贵,一般人玩不起;随着互联网的发展,免费的SSL证书越来越普及,谁都可以很容易获取到,所以HTTPS的个人网站也越来越多。
其中,现在最流行的就是使用可靠的数字证书认证机构Let's Encrypt提供的免费SSL证书。

阅读更多

[原创] 为nginx添加SSL支持模块

因为网站要加SSL证书的原因,把nginx折腾了一番,结果SSL相关的配置加到了nginx的配置文件中后,nginx竟然启动不起来了,用 systemctl status nginx 查看到的错误信息大致如下:

Failed to start SYSV: Nginx is an HTTP(S) server, HTTP(S) reverse ...

于是用如下命令测试问题所在:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其中,/usr/local/nginx/sbin/nginx 是我的nginx安装后的可执行程序路径,/usr/local/nginx/conf/nginx.conf 是我的nginx主配置文件路径。

阅读更多

[原创] LaTeX for WordPress插件更新MathJax Server地址

MathJax是WordPress的LaTeX for WordPress插件调用的library,用于在WordPress页面上渲染显示完美的数学公式,配置过程可以参考这个链接。
从2017.04.30开始,MathJax CDN服务正式关闭(官方通知在这里),因此,如果我们原来在LaTeX for WordPress插件中配置的“MathJax Server”选择的是“MathJax CDN”,那么就会有问题了——服务将不再可用,这会导致数学公式在WordPress页面上不能被渲染显示。

阅读更多

[原创] 在树莓派上跑起来TensorBoard

本文软硬件环境:
树莓派:3代 Model B V1.2
OS:Arch Linux ARM,32bit

TensorBoard是Tensorflow的可视化工具。当我们用这篇文章里的方法在树莓派上安装好Tensorflow之后,TensorBoard自然就装好了。于是,下面只剩下怎么启动它的问题。
以下是一个例子。

阅读更多

[原创] 如何防止softmax函数上溢出(overflow)和下溢出(underflow)

Deep Learning》(Ian Goodfellow & Yoshua Bengio & Aaron Courville)第四章「数值计算」中,谈到了上溢出(overflow)和下溢出(underflow)对数值计算的影响,并以softmax函数和log softmax函数为例进行了讲解。这里我再详细地把它总结一下。

阅读更多

[原创] 解决Java程序读写HDFS文件的错误:No FileSystem for scheme: hdfs

如果你在程序中(不是一个Hadoop job程序)有读写HDFS文件的逻辑,那么程序运行的时候可能会报下面的错:

Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
        at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2676)
        at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2690)
        at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)
        at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2733)
        at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2715)
        at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:382)
        at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:181)
        ......

[原创] 解决JAVA访问Elasticsearch的问题:org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available

本文对应的的Elasticsearch(简写为ES,下同)版本:2.3.5
注:本文写作于多年以前,现在ES已经不提倡使用本文的 TransportClient 来操作ES了,而应使用RestClient。所以本文仅做参考! 2020.08.25

使用Elasticsearch的 JAVA API 来读取其存储的数据,如果遇到这个问题:

org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available

此时,需要确认代码里写的一些配置是正确的。下面,就通过一个实例,来说明如何正确地读取ES里的数据。

阅读更多

[原创]Machine Learning/机器学习 文章合集

注:带有 ♬♬♬♬♬ 标志的是文章合集。

强化学习(Reinforcement Learning)文章合集 ♬♬♬♬♬

用人话解释机器学习中的Logistic Regression(逻辑回归)

如何防止softmax函数上溢出(overflow)和下溢出(underflow)

ELL(Embedded Learning Library,微软嵌入式学习库)文章合集 ♬♬♬♬♬

阅读更多

[原创] 《Neural Networks and Deep Learning》读书笔记:反向传播的4个基本方程(1)

反向传播的4个基本方程这部分内容开始,《Neural Networks and Deep Learning》一书基本上是满屏的数学公式了,然而,得益于作者强大的、深入浅出的表述能力,理解起来并不会让人感觉那么难。
本文将描述反向传播的4个基本方程中的第一个——输出层误差的方程

阅读更多

[原创] 《Neural Networks and Deep Learning》读书笔记:最简单的识别MNIST的神经网络程序(1)

Neural Networks and Deep Learning》一书的中文译名是《神经网络与深度学习》,书如其名,不需要解释也知道它是讲什么的,这是本入门级的好书。
在第一章中,作者展示了如何编写一个简单的、用于识别MNIST数据的Python神经网络程序。对于武林高手来说,看懂程序不会有任何困难,但对于我这样的Python渣则有很多困惑。所以我对做了一些笔记,希望同时也可以帮助有需要的人。

阅读更多

[原创] 在树莓派上把文字转成语音(Text-To-Speech/TTS)

本文软硬件环境:
树莓派:3代 Model B V1.2,内存1GB
OS:Arch Linux ARM

有时候,我们需要在程序中添加文字转语音的功能,即通过某个程序或API,把输入的文字朗读出来,也就是通常所说的 text-to-speech(简写为TTS)。我尝试了一个简单的方案——使用Espeak来完成这个任务,在这里记录下来。

阅读更多

[原创] 加快TensorFlow在树莓派上的执行速度——服务常驻内存

本文软硬件环境:
树莓派:3代 Model B V1.2,内存1GB
OS:Arch Linux ARM

上一篇文章中,我尝试了加快TensorFlow预测速度的一个方法——模型“预热”,实验证明它非常有效,但那仍然没有解决一个问题:每次运行程序,都要加载一次模型,然后预热N次,这个过程非常耗时,因此减少这部分时间也是非常关键的。把TensorFlow做成一个常驻内存的服务就可以解决这个问题。
解决这个问题的正确姿势是:TensorFlow已经提供了一个叫作 TensorFlow Serving 的library来实现这个需求。但麻烦的是,在树莓派上编译TensorFlow Serving会遇到很多问题,所以,在没有人搞出在树莓派上一键安装的Python wheel包之前,还是算了吧...
因此,下面我用一个很挫的办法来实现一个简陋的TensorFlow service。

阅读更多