自动机器学习框架之三 _Auto-Keras

  对于训练深度学习,设计神经网络结构是其中技术含高最高的任务,优秀的网络架构往往依赖建构模型的经验,专业领域知识,以及大量的算力试错。实际应用中往往基于类似功能的神经网络微调生成新的网络结构。

 Auto-Keras 是一个离线使用的开源库,用于构建神经网络结构和搜索超参数,支持 RNN,CNN 神经网络,它使用了高效神经网络搜索 ENAS,利用迁移学习的原理将在前面任务中学到的权值应用于后期的模型中,效率相对较高。除了支持 keras,它还提供 TensorFlow 他 PyTorch 的版本。

1. 安装

  由于需要把输出的神经网络结构保存成图片,使用了 pydot 和 graphviz 图像工具支持,auto-keras 支持 torch 等多种工具支持,因此,安装时会下载大量依赖软件。使用以下方法安装 auto-keras:

1
2
3
$ apt install graphviz 
$ pip3 install pydot
$ pip3 install autokeras

  使用以下方法下载源码:

1
$ git clone https://github.com/jhfjhfj1/autokeras

2. 举例

  本例中使用了 mnist 数据集,它是一个入门级的图像识别数据集,用于训练手写数字识别模型,例程自动下载训练数据,然后创建了图片分类器,训练时间设置为 10 分钟,模型在测试集上的正确率为 99.21%。建议使用带 GPU 的机器训练模型,它比使用 CPU 训练速度快几十倍。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from keras.datasets import mnist
from autokeras import ImageClassifier
from autokeras.constant import Constant
import autokeras
from keras.utils import plot_model

if __name__ == '__main__':
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,))
x_test = x_test.reshape(x_test.shape + (1,))
clf = ImageClassifier(verbose=True, augment=False)
clf.fit(x_train, y_train, time_limit=10 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
y = clf.evaluate(x_test, y_test)
print(y * 100)
clf.export_keras_model('model.h5')
plot_model(clf, to_file='model.png')
# 返回值: 99.21
# 谢彦的技术博客

  上述程序在我的机器上运行后训练出了 17 层网络,其中包括 dropout 层,池化层,卷积层,全连接层等,程序以图片方式将描述信息保存在 model.png 中,下面截取了图片中的部分层作为示例,如下图所示: