8个常用python库从安装命令及应用程序( 五 )


本书用Keras库来搭建神经网络 。事实上,Keras并非简单的神经网络库,而是一个基于Theano的强大的深度学习库,利用它不仅可以搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等 。由于它是基于Theano的,因此速度也相当快 。
Theano也是Python的一个库,它是由深度学习专家Yoshua Bengio带领的实验室开发出来的,用来定义、优化和高效地解决多维数组数据对应数学表达式的模拟估计问题 。它具有高效实现符号分解、高度优化的速度和稳定性等特点,最重要的是它还实现了GPU加速,使得密集型数据的处理速度是CPU的数十倍 。
用Theano就可以搭建起高效的神经网络模型,然而对于普通读者来说门槛还是相当高的 。Keras正是为此而生,它大大简化了搭建各种神经网络模型的步骤,允许普通用户轻松地搭建并求解具有几百个输入节点的深层神经网络,而且定制的自由度非常大,读者甚至因此惊呼:搭建神经网络可以如此简单!
1. 安装
安装Keras之前首先需要安装NumPy、SciPy和Theano 。安装Theano之前首先需要准备一个C++编译器,这在Linux系统下是自带的 。因此,在Linux系统下安装Theano和Keras都非常简单,只需要下载源代码,然后用python setup.py install安装就行了,具体可以参考官方文档 。
可是在Windows系统下就没有那么简单了,因为它没有现成的编译环境,一般而言是先安装MinGW(Windows系统下的GCC和G++),然后再安装Theano(提前装好NumPy等依赖库),最后安装Keras,如果要实现GPU加速,还需要安装和配置CUDA 。
值得一提的是,在Windows系统下的Keras速度会大打折扣,因此,想要在神经网络、深度学习做深入研究的读者,请在Linux系统下搭建相应的环境 。
参考链接:
***/software/theano/install.html#install
2. 使用
用Keras搭建神经网络模型的过程相当简单,也相当直观,就像搭积木一般,通过短短几十行代码,就可以搭建起一个非常强大的神经网络模型,甚至是深度学习模型 。简单搭建一个MLP(多层感知器),如代码清单2-34所示 。

  • 代码清单2-34 搭建一个MLP(多层感知器)
# -*- coding: utf-8 -*- from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.optimizers import SGD model = Sequential() # 模型初始化 model.add(Dense(20, 64)) # 添加输入层(20节点)、第一隐藏层(64节点)的连接 model.add(Activation('tanh')) # 第一隐藏层用tanh作为激活函数 model.add(Dropout(0.5)) # 使用Dropout防止过拟合 model.add(Dense(64, 64)) # 添加第一隐藏层(64节点)、第二隐藏层(64节点)的连接 model.add(Activation('tanh')) # 第二隐藏层用tanh作为激活函数 model.add(Dropout(0.5)) # 使用Dropout防止过拟合 model.add(Dense(64, 1)) # 添加第二隐藏层(64节点)、输出层(1节点)的连接 model.add(Activation('sigmoid')) # 输出层用sigmoid作为激活函数 sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) # 定义求解算法 model.compile(loss='mean_squared_error', optimizer=sgd) # 编译生成模型,损失函数为平均误差平方和 model.fit(X_train, y_train, nb_epoch=20, batch_size=16) # 训练模型 score = model.evaluate(X_test, y_test, batch_size=16) # 测试模型 要注意的是,Keras的预测函数跟scikit-learn有所差别,Keras用model.predict()方法给出概率,用model.predict_classes()给出分类结果 。
参考链接:
https://keras.io/
08 Gensim在Gensim官网中,它对自己的简介只有一句话:topic modelling for humans!
Gensim用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等,这些领域的任务往往需要比较多的背景知识 。

推荐阅读