Auto-Keras试水

之前一直使用Keras进行深度学习的一些项目,其中最难受的就是找最适合数据集的网络,需要各种尝试。但最近出了一个叫Auto-Keras的库,其可以通过在大型计算图中搜索最优子图来学习发现最适合训练数据集的神经网络结构,简言之,就是可以自动选取最优的网络,最终目标就是让所有领域的只需很少的数据科学或者机器学习背景的人都可以很轻松便捷地使用深度学习。

于是按捺不住躁动的内心,决定试试水,看看到底有没有论文说的那么神。


一些参考网址与文献


初次试水安装autokeras

首先我们按照官方网站的方法进行安装,注意:Auto-Keras暂时只支持Python3.6。

pip install autokeras

但是到这里就会直接报错:

  Could not find a version that satisfies the requirement torch==0.4.1 (from autokeras) (from versions: 0.1.2, 0.1.2.post1)
No matching distribution found for torch==0.4.1 (from autokeras)

torch版本太低了,只有0.4.1的才行,然后就去PyTorch官网(https://pytorch.org/)下载相应版本的torch。

按照要求安装之后,再更新tensorflow-gpu,运行就接着说我的CUDA版本太低,需要安装9.0版本。装完后重启计算机,再去网站安装cuDNN 7,并设置环境变量。最后在Python中运行import autokeras,终于成功!

中间的配置过程非常的繁琐,并且因人而异,不足为外人道也。如果你在安装时出现了问题,可以直接在博客下方评论,如果是自己遇到的问题,也会尽力去帮助大家!


测试

我们使用官网中的代码进行测试:

from keras.datasets import mnist
# from autokeras.image_supervised import ImageClassifier
from autokeras.image.image_supervised import ImageClassifier

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)
    clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
    clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
    y = clf.evaluate(x_test, y_test)
    print(y)

但可能配置环境还是出现了问题,代码运行后一直卡在下图所示的位置,之后运行出结果再来更新结果。


2018.11.13更新

遇到这个问题在评论区有大神说是因为autokeras依赖fork,而os.fork()无法在Windows上运行,因此会出现这种情况,可供参考。

但另外还发现有博客:autoKeras Windows 的入门测试,可以在Windows环境下运行。

不过我这边用的IDE是Spyder,那边用的是Visual Studio,并且我将其数据集下载,并尝试复现其代码,发现同样会卡在上图所示界面,并不能成功运行。

不知是否环境配置原因导致了这样的现象出现。 也希望能够请各位多多指教~!


2019.1.20更新

在GPU服务器上测试,终于是动起来了。但是需要注意代码需要进行一定的变动:前面的from autokeras.image_supervised import ImageClassifier会报错,这里修改成from autokeras import ImageClassifier即可正常运行,如下所示:

from keras.datasets import mnist
from autokeras import ImageClassifier

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)
    clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
    clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
    y = clf.evaluate(x_test, y_test)
    print(y)

下面为运行时截图,基本每个epoch运行20s左右,会自动一个model一个model的train。


最后的结果还是不错:

最终的结果准确率有99.57%,已经优于现在很多网络框架了(这次测试结果的框架被我测试的时候覆盖了没有保存。。。后面没有重现出这么高的准确率了)。

关于Auto-Keras详细代码的介绍,可以参考博客:Auto-Keras跑mnist数据集详解及最优结构可视化(亲测能运行)

后面有空会开一个博客说说autoKeras的实现原理,顺便自己学一学~

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值