测试本地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,' ','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了。下面我们来看一下可视化网络吧。