DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介、特点、安装、使用方法详细攻略
Paper:《Efficient Neural Architecture Search via Parameter Sharing》
目录
AutoKeras是一个开源的,基于 Keras 的新型 AutoML 库。AutoKeras 是一个用于自动化机器学习的开源软件库,提供自动搜索深度学习模型的架构和超参数的功能。
(1)、Keras 是一个用 Python 编写的高级神经网络 API,能够在 TensorFlow、CNTK 或 Theano 之上运行。它的意义在于可以实现快速实验。而能够以最小的延迟把想法变成结果是顺利进行研究的关键。
AutoKeras比AutoML伟大的地方就是开源,哈哈,开源就等同于免费!这是我非常喜欢的一点!!!简而言之,AutoML是给有钱的公司玩的,像我们这样做学术研究的, AutoKeras简直妙不可言!!
官方网站:https://autokeras.com/
项目github:https://github.com/jhfjhfj1/autokeras
TensorFlow版本:https://github.com/melodyguan/enas
PyTorch 版本:https://github.com/carpedm20/ENAS-pytorch
1、AutoKeras 基于非常易于使用的深度学习数据库 Keras,使用 ENAS 的方法。ENAS 是 NAS 的最新版本,因此让 AutoKeras 具有高效、安装简单、参数可调、易修改等特点。
1、安装AutoKeras
pip install autokeras
2、测试
- import autokeras as ak
-
- clf = ak.ImageClassifier()
- clf.fit(x_train, y_train)
- results = clf.predict(x_test)
-
-
- 导出模型
- from autokeras import ImageClassifier
- clf = ImageClassifier(verbose=True, augment=False)
- clf.load_searcher().load_best_model().produce_keras_model().save('my_model.h5')
-
-
- 可视化模型
- from keras.models import load_model
- model = load_model('my_model.h5') See 'How to export keras models?' to generate this file before loading it.
- from keras.utils import plot_model
- plot_model(model, to_file='my_model.png')
1、举个栗子
- from keras.datasets import mnist
- from autokeras.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)
2、再举一个栗子
- coding:utf-8
- import os
- os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
- import numpy as np
- import matplotlib.pyplot as plt
- from scipy.misc import imresize
- import cv2
- from autokeras.image_supervised import ImageClassifier
- from sklearn.metrics import accuracy_score
- from keras.models import load_model
- from keras.utils import plot_model
- import time
-
-
- start = time.time()
-
- def read_img(path,class_num):
- imgName_list = os.listdir(path)
- n = len(imgName_list)
- img_index,img_colummns,img_rgbSize = plt.imread(path+'/'+imgName_list[0]).shape
- img_index, img_colummns = [28,38] 这个设置很重要。如果你的电脑很好的话可以忽略设置。要不然内存不足的。
- print(img_index,img_colummns)
- data = np.zeros([n,img_index,img_colummns,1])
- label = np.zeros([n,1])
- class_number = 0
- for i in range(n):
- imgPath = path+'/'+imgName_list[i]
- data[i,:,:,0] = imresize(cv2.cvtColor(plt.imread(imgPath),cv2.COLOR_BGR2GRAY),[img_index,img_colummns])
- if (i)%(class_num) == 0:
- class_number = class_number+1
- label[i,0] = class_number
- return data,label
-
- x_train,y_train = read_img('./data/re/train',80)
- x_test,y_test = read_img('./data/re/test',20)
-
- animal = ['bus', 'dinosaur', 'flower', 'horse', 'elephant'] 动物类别对应 labelValue 为 [1,2,3,4,5]
- plt.imshow(x_test[0,:,:,0],cmap='gray')
- plt.show()
-
- if __name__=='__main__':
- 模型构建
- model = ImageClassifier(verbose=True)
- 搜索网络模型
- model.fit(x_train,y_train,time_limit=1*60)
- 验证最优模型
- model.final_fit(x_train,y_train,x_test,y_test,retrain=True)
- 给出评估结果
- score = model.evaluate(x_test,y_test)
- 识别结果
- y_predict = model.predict(x_test)
- 精确度
- accuracy = accuracy_score(y_test,y_predict)
- 打印出score与accuracy
- print('score:',score,' accuracy:',accuracy)
-
- model_dir = r'./modelStructure/imgModel.h5'
- model_img = r'./modelStructure/imgModel_ST.png'
- 保存可视化模型
- model.load_searcher().load_best_model().produce_keras_model().save(model_dir)
- 加载模型
- automodel = load_model(model_dir)
- 输出模型 structure 图
- plot_model(automodel, to_file=model_img)
-
- end = time.time()
- print(end-start)
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!