用Spacemacs+CIDER写Clojure

Introduction

因为最近在玩Clojure,但是感觉Intellij+Cursive并不太顺手,具体表现在鬼畜的Paredit(Cursive给的应该也算是Paredit高仿吧)快捷键以及奇奇怪怪的问题。(重要原因还是因为Intellij长得不够好看)

于是开始玩Spacemacs+CIDER来写Clojure,感觉代码效率++++++++++++++++++++++

Features

1.png

(Tips: 图中是我正在写的一个Web Game0v0 Space Game-0.1.0-demo)

Clojure HelloWorld [猜数游戏]

最近买了黑客与画家,看到书评上说看完这本书可能会忍不住去学Lisp。果然,Paul大佬在书里把Lisp吹得神乎其神(233333),买完这本书的后一周我就又买了本Living Clojure。

关于Clojure

Clojure是Lisp的方言,然而它基于JVM。Clojure的创造者说:

你可以不喜欢Java,但你可以喜欢JVM。

emmm,明显是因为JVM平台lib丰富才苟了一波嘛,还要这样安慰自己。_(:зゝ∠)_

使用cifar-10训练DCGAN

DCGAN

DCGAN的全称是Deep Convolutional Generative Adversarial Network,深层卷积生成对抗网络。看名字就知道,这个网络和卷积有关,而且它也属于生成对抗网络。

生成对抗网络的目的是根据输入数据,生成与输入数据尽量相似的输出。为了达到这一目的,我们训练两个对抗的神经网络:Generator和Discriminator,他们目的不同,相互对抗。Generator的目的是生成尽量真实的图片从而骗过Discriminator,而Discriminator的目的则是鉴别图片的真假。

零基础理解卷积神经网络[1]

零基础理解卷积神经网络 - 索引页

本文译自A Beginner’s Guide To Understanding Convolutional Neural Networks,已征得原作者同意。

写在前面

在这片文章中,我们要深入探讨更多关于卷积神经网络的特性。

免责声明:我知道这些话题中有的很复杂,甚至可以独立成章。所以为了保持简洁与综合,我会提供一些详细解释这些话题的论文链接。

步长(Stride)与边框(Padding)

好啦,来继续看看我们的老朋友卷积神经网络。还记得卷积核,感知域和卷积吗?很好。现在,我要告诉你还有两个参数会改变每一层的行为。在选择了卷积核大小之后,我们也要选择步长和边框。

步长决定了卷积核如何在输入图像上做卷积。在第一部分的例子中,卷积核在做卷积时每次只移动一个单位。卷积核每次移动的单位数量就是步长。在那个例子中,步长默认为1。步长一般使输出尺寸为一个整数而非一个分数。来看看这个例子,我们有一张7 × 7的图像和一个步长为1的3 × 3卷积核(简单起见,忽略深度)。这是我们早就知道的情况。

img

多熟悉啊,是不是?猜猜当步长被设置为2时会发生什么?

img

正如你看到的那样,感知域每次移动2个单位,并且输出尺寸也因此缩小了。

Ubuntu16.10为Tensorflow安装CUDA8.0与cuDNN

如果有一块好的GPU,那么对模型训练的加速是非常显著的,比如我i3训练一个上百万参数的神经网络,数据集50000条,一个epoch需要整整400秒,但是用GTX750Ti加速,一个epoch只要30秒。本来要训练一整天的模型,挂在那里两个小时就训练完毕了。

为了使用GPU加速神经网络的计算,CUDA是一个不错的选择。当然,别忘了安装tensorflow-gpu版本。