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

  • 相关阅读:
    包教包会之Open Live Writer设置代码样式
    走近Java之HashMap In JDK8
    走近Java之包装器类Integer
    走近Java之幕后的String
    一点心得
    一个简单的多线程代码实例
    C++实现快速排序
    力扣1025. 除数博弈
    力扣1721. 交换链表中的节点
    力扣1422. 分割字符串的最大得分
  • 原文地址:https://www.cnblogs.com/wuzaipei/p/9591193.html
Copyright © 2020-2023  润新知