autoKeras入门

测试本地mnist数据集

图片只用500张,450张做train与50张test,

代码如下:

  

# conding:utf-8
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import numpy as np
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from autokeras.image_supervised import ImageClassifier
from keras.models import load_model
from keras.utils import plot_model
import time


# 数据准备
x_train =np.zeros((4500,28,28,1))
x_test =np.zeros((500,28,28,1))
y_train=[]
y_test=[]
start = time.time()
for i in range(0,10):
    for j in range(1,501):
        if j < 451: #将数据保存到训练数据中
            x_train[(j-1)+(i*450),:,:,0]=plt.imread('./data/%d/%d_%d.bmp'%(i,i,j)) #reshape 可以降维也就是矩阵变化
            y_train.append(i)  #append 是读进来的数据进行存储的意思
        else: #保存到预测数据中
            x_test[(i*50)+(j-452),:,:,0]=plt.imread('./data/%d/%d_%d.bmp'%(i,i,j))
            y_test.append(i)
y_t = np.array(y_test).reshape(-1,1)
print(x_train.shape)
# x_train = np.array(x_train).reshape(450,28,28,1)
y_train = np.array(y_train)

# x_test = np.array(x_test).reshape(50,28,28,1)
y_test = np.array(y_test)
print(y_test.shape)

if __name__ == '__main__':
    model_dir = r'./models/autoTf_model.h5'
    model_img = r'./model_img/atuoTf_model.png'

    # 使用图片识别器
    clf = ImageClassifier(verbose=True)
    # 给其训练数据和标签,训练的最长时间可以设定,假设为1分钟,autokers会不断找寻最优的网络模型
    clf.fit(x_train, y_train, time_limit=5 * 60)
    # 找到最优模型后,再最后进行一次训练和验证
    clf.final_fit(x_train,y_train,x_test, y_test, retrain=True)
    # 给出评估结果
    y = clf.evaluate(x_test, y_test)
    # 输出我么测试数据
    y_pred = clf.predict(x_test)
    # accuracy精确度
    accuracy = accuracy_score(y_test,y_pred)

    print("evaluate:", y,'\n','accuracy:',accuracy)
    #保存可视化模型
    clf.load_searcher().load_best_model().produce_keras_model().save(model_dir)
    # 加载可视化模型
    autoModel = load_model(model_dir)
    # y_predict = autoModel.predict(x_test)
    # print(y_predict.shape)
    # 可视化模型画图
    plot_model(autoModel,to_file=model_img)

#计时
end = time.time()
print(start-end)

测试结果:accuracy值为0.93而已,然而我用时5分钟(min),自己建立的网络可以达到 0.948,不过自动搜索网络感觉还行吧,有待提高。毕竟是自动的。能到达这种精度是非常厉害的了。如果给他 更多时间的话估计能上0.98了。下面我们来看一下可视化网络吧。

 

posted @ 2018-09-05 11:36  洺剑残虹  阅读(560)  评论(0编辑  收藏  举报