AutoKeras使用教程

文档:https://autokeras.com/
代码:https://github.com/keras-team/autokeras
参考:https://www.cnblogs.com/hutao722/p/9553526.html

AutoKeras可以完成分类任务的神经网络搜索。

感受到auto的强大,并且还有AutoKeras还是开源的,就赶紧来试试这最新的技术了。

安装

打开开发文档,就看到了可爱的docker,当然就首选它进行安装了。


docker pull garawalid/autokeras:latest

下载镜像后,就可以直接用了:

docker run -it --shm-size 2G garawalid/autokeras /bin/bash

测试等操作详见文档https://autokeras.com/docker/,可以跳过,我们往下走。

简单分类

上述代码可以完成简单的mnist的分类
1.加载mnist数据。
2.使用ImageClassifier分类器。
3.fit函数开始训练,time_limit可设置搜索时间,代码中设置为12小时。
4.final_fit找到最优模型后,再最后进行一次训练和验证。
5.evaluate评估模型。

from keras.datasets import mnist
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)

训练自己的数据集

有了上边的基础,对于基本操作已经有较好的理解了。我们可以尝试训练自己的数据集。

数据准备

参考文档:https://autokeras.com/start/
可以使用load_image_dataset函数加载数据。包括csv_file_path和images_path两个参数。

from autokeras.image.image_supervised import load_image_dataset

x_train, y_train = load_image_dataset(csv_file_path="train/label.csv",
                                      images_path="train")
print(x_train.shape)
print(y_train.shape)

x_test, y_test = load_image_dataset(csv_file_path="test/label.csv",
                                    images_path="test")
print(x_test.shape)
print(y_test.shape)

csv_file_path中的csv文件格式如下,包含图片名以及label信息。

File Name,Label
00000.jpg,5
00001.jpg,0
00002.jpg,4
00003.jpg,1
00004.jpg,9
00005.jpg,2
00006.jpg,1
...

将图像名称保存到images中,对应标签放到labels中,即可划分好训练集和测试集(4:1),并保存可用的csv文件。

import os
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split

images = []
labels = []

X_train, X_test, y_train, y_test = train_test_split(images, labels, test_size=0.2, random_state=42)

pd.DataFrame({'File Name':X_train,'Label':y_train}).to_csv('./train.csv',index=0)
pd.DataFrame({'File Name':X_test,'Label':y_test}).to_csv('./test.csv',index=0)

print(len(X_train))
print(len(X_test))

https://autokeras.com/start/中也提供了为某组织形式图片生成对应csv文件的代码。

训练模型

数据组织读取完成,就该寻找模型了,并保存。

from autokeras.image.image_supervised import load_image_dataset, ImageClassifier
from keras.models import load_model
from keras.utils import plot_model
from autokeras.utils import pickle_from_file
from keras.preprocessing.image import load_img, img_to_array
import numpy as np
import time

#读取数据
print('load_train_data')
begin = time.time()
x_train, y_train = load_image_dataset(csv_file_path="./train.csv",
                                      images_path="./images")
print(x_train.shape)
print(y_train.shape)

print('load_test_data')
x_test, y_test = load_image_dataset(csv_file_path="./test.csv",
                                    images_path="./images")
print(x_test.shape)
print(y_test.shape)
print('ues_time='+str(time.time()-begin))

MODEL_DIR = './my_model.h5'
MODEL_PNG = './model.png'

# 数据进行格式转换
train_data = train_data.astype('float32') / 255
test_data = test_data.astype('float32') / 255
print("train data shape:", train_data.shape)

# 使用图片识别器,保存在路径"./automodels/"中。
clf = ImageClassifier(path="./automodels/",verbose=True, augment=False)
# 给其训练数据和标签,训练的最长时间可以设定,假设为1分钟,autokers会不断找寻最优的网络模型
clf.fit(train_data, train_labels, time_limit=10*60* 60)
# 找到最优模型后,再最后进行一次训练和验证
clf.final_fit(train_data, train_labels, test_data, test_labels, retrain=True)
# 给出评估结果
y = clf.evaluate(test_data, test_labels)
print("evaluate:", y)
# 导出我们生成的模型
clf.export_autokeras_model(MODEL_DIR)
# 加载模型
model = pickle_from_file(MODEL_DIR)

可视化visualize.py
可视化之前需要安装一些东西

pip install pydot
pip install pydotplus
apt install graphviz
import os
from graphviz import Digraph

from autokeras.utils import pickle_from_file


def to_pdf(graph, path):
    dot = Digraph(comment='The Round Table')

    for index, node in enumerate(graph.node_list):
        dot.node(str(index), str(node.shape))

    for u in range(graph.n_nodes):
        for v, layer_id in graph.adj_list[u]:
            dot.edge(str(u), str(v), str(graph.layer_list[layer_id]))

    dot.render(path)


def visualize(path):
    cnn_module = pickle_from_file(os.path.join(path, 'module'))
    cnn_module.searcher.path = path
    for item in cnn_module.searcher.history:
        model_id = item['model_id']
        graph = cnn_module.searcher.load_model_by_id(model_id)
        to_pdf(graph, os.path.join(path, str(model_id)))


if __name__ == '__main__':
    visualize('./automodels/')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容