IT教程 ·

Keras入门(六)模子练习及时可视化

赛狗日源码分享 《Head First C#》第三版

在北京做某个项目标时刻,客户请求能够对数据举行练习、展望,同时能导出模子,另有在页面上显现练习的进度。前面的几个请求都不难完成,但在页面上显现练习进度当时笔者并没有完成。
本文将会分享如安在Keras中将模子练习的历程及时可视化。
荣幸的是,已有人帮我们做好了这件事,这个项目名叫hualos,Github的接见网址为:, 作者为François Chollet和Eder Santana,前面的作者就是Keras的创造者,同时也是书本《Deep Learning with Python》的作者。
大神的事情大大处所便了我们的运用。挪用该项目仅须要三行代码,示例以下:

from keras import callbacks
remote = callbacks.RemoteMonitor(root='http://localhost:9000')

model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, validation_data=(X_test, Y_test), callbacks=[remote])

该项目运用Python2写的,用到的第三方模块为Flask, gevent,个中Flask为网页端框架,gevent用于并发。用到的JavaScript的第三方模块为D3.js和C3.js。该项目运用起来异常轻易,只须要切换至hualos项目地点文件夹,然后python api.py即可。
下面将引见其运用方法,我们的项目构造以下:
Keras入门(六)模子练习及时可视化 IT教程 第1张
个中hualos能够从Github上直接clone下来,笔者对代码和HTML网页稍作了修正,便于本身运用。model_train.py为Keras模子练习剧本,iris.csv为有名的鸢尾花数据集。
model_train.py中应用Keras搭建了简朴的DNN模子对鸢尾花数据集举行练习及展望,该模子的引见已在文章中给出,其完全代码以下:

# 导入模块
import numpy as np
import keras as K
import tensorflow as tf
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer
from keras import callbacks


# 读取CSV数据集,并拆分为练习集和测试集
# 该函数的传入参数为CSV_FILE_PATH: csv文件途径
def load_data(CSV_FILE_PATH):
    IRIS = pd.read_csv(CSV_FILE_PATH)
    target_var = 'class'  # 目标变量
    # 数据集的特性
    features = list(IRIS.columns)
    features.remove(target_var)
    # 目标变量的种别
    Class = IRIS[target_var].unique()
    # 目标变量的种别字典
    Class_dict = dict(zip(Class, range(len(Class))))
    # 增添一列target, 将目标变量举行编码
    IRIS['target'] = IRIS[target_var].apply(lambda x: Class_dict[x])
    # 对目标变量举行0-1编码(One-hot Encoding)
    lb = LabelBinarizer()
    lb.fit(list(Class_dict.values()))
    transformed_labels = lb.transform(IRIS['target'])
    y_bin_labels = []  # 对多分类举行0-1编码的变量
    for i in range(transformed_labels.shape[1]):
        y_bin_labels.append('y' + str(i))
        IRIS['y' + str(i)] = transformed_labels[:, i]
    # 将数据集分为练习集和测试集
    train_x, test_x, train_y, test_y = train_test_split(IRIS[features], IRIS[y_bin_labels], 
                                                        train_size=0.7, test_size=0.3, random_state=0)
    return train_x, test_x, train_y, test_y, Class_dict


if __name__ == '__main__':

    # 0. 入手下手
    print("nIris dataset using Keras")
    np.random.seed(4)
    tf.set_random_seed(13)

    # 1. 读取CSV数据集
    print("Loading Iris data into memory")
    CSV_FILE_PATH = 'iris.csv'
    train_x, test_x, train_y, test_y, Class_dict = load_data(CSV_FILE_PATH)

    # 2. 定义模子
    init = K.initializers.glorot_uniform(seed=1)
    simple_adam = K.optimizers.Adam()
    model = K.models.Sequential()
    model.add(K.layers.Dense(units=5, input_dim=4, kernel_initializer=init, activation='relu'))
    model.add(K.layers.Dense(units=6, kernel_initializer=init, activation='relu'))
    model.add(K.layers.Dense(units=3, kernel_initializer=init, activation='softmax'))
    model.compile(loss='categorical_crossentropy', optimizer=simple_adam, metrics=['accuracy'])

    # 3. 练习模子
    b_size = 1
    max_epochs = 100
    print("Starting training ")
    remote = callbacks.RemoteMonitor(root='http://localhost:9000')
    h = model.fit(train_x, train_y, validation_data=(test_x, test_y), batch_size=b_size, epochs=max_epochs,
                  shuffle=True, verbose=1, callbacks=[remote])
    print("Training finished n")

    # 4. 评价模子
    eval = model.evaluate(test_x, test_y, verbose=0)
    print("Evaluation on test data: loss = %0.6f accuracy = %0.2f%% n" 
          % (eval[0], eval[1] * 100) )

    # 5. 运用模子举行展望
    np.set_printoptions(precision=4)
    unknown = np.array([[6.1, 3.1, 5.1, 1.1]], dtype=np.float32)
    predicted = model.predict(unknown)
    print("Using model to predict species for features: ")
    print(unknown)
    print("nPredicted softmax vector is: ")
    print(predicted)
    species_dict = {v:k for k,v in Class_dict.items()}
    print("nPredicted species is: ")
    print(species_dict[np.argmax(predicted)])

我们切换至hualos文件夹,运转python api.py,然后再用Python3运转model_train.py文件,在浏览器中输入网址::

由于这里没法给出视频,须要寓目视频的读者能够移步网址: 。

本项目标Github地点为: 。
本期分享到此结束,谢谢人人浏览~

ORB-SLAM2 论文&代码学习 —— 单目初始化

参与评论