博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Keras(三)实现深度神经网络
阅读量:4201 次
发布时间:2019-05-26

本文共 5333 字,大约阅读时间需要 17 分钟。

本文将在上节基础上,添加DNN深度学习模型。

一,打印使用的python库的版本信息

import matplotlib as mplimport matplotlib.pyplot as pltimport numpy as npimport sklearnimport pandas as pdimport osimport sysimport timeimport tensorflow as tffrom tensorflow import keras# 1,打印使用的python库的版本信息print(sys.version_info)for module in mpl, np, pd, sklearn, tf, keras:    print(module.__name__, module.__version__)#---output-----------sys.version_info(major=3, minor=8, micro=5, releaselevel='final', serial=0)matplotlib 3.3.2numpy 1.19.1pandas 1.0.3sklearn 0.23.2tensorflow 2.2.0tensorflow.keras 2.3.0-tf

二,从keras.datasets中提取图片数据集-“训练数据”、“验证数据”、“测试数据”,并打印其维度

fashion_mnist = keras.datasets.fashion_mnist(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data()x_valid, x_train = x_train_all[:5000], x_train_all[5000:]y_valid, y_train = y_train_all[:5000], y_train_all[5000:]print(x_valid.shape, y_valid.shape)print(x_train.shape, y_train.shape)print(x_test.shape, y_test.shape)#---------output--------------------(5000, 28, 28) (5000,)(55000, 28, 28) (55000,)(10000, 28, 28) (10000,)

三,对数据标准化处理

# x = (x - u) / stdfrom sklearn.preprocessing import StandardScalerscaler = StandardScaler()# x_train: [None, 28, 28] -> [None, 784]x_train_scaled = scaler.fit_transform(    x_train.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)x_valid_scaled = scaler.transform(    x_valid.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)x_test_scaled = scaler.transform(    x_test.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)

四,构建DNN深度神经网络模型

# tf.keras.models.Sequential()model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(50):    model.add(keras.layers.Dense(100, activation="relu"))model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy",              optimizer = keras.optimizers.SGD(0.01),              metrics = ["accuracy"])

五,查看模型整体结构-及参数

print(model.summary())

六,添加回调函数、训练模型

# Tensorboard, earlystopping, ModelCheckpointlogdir = './dnn-callbacks'if not os.path.exists(logdir):    os.mkdir(logdir)output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")callbacks = [    keras.callbacks.TensorBoard(logdir),    keras.callbacks.ModelCheckpoint(output_model_file,save_best_only = True),    keras.callbacks.EarlyStopping(patience=10, min_delta=1e-3),]history = model.fit(x_train_scaled, y_train, epochs=20,                    validation_data=(x_valid_scaled, y_valid),                    callbacks = callbacks)

七,绘制训练模型中,变化过程

在训练过程中,可能会发生梯度爆炸或梯度消失的情况。具体原因可参考:

此处附带笔者对sigmoid函数详细的求导、求极值过程链接如下:

def plot_learning_curves(history):    pd.DataFrame(history.history).plot(figsize=(8, 5))    plt.grid(True)    plt.gca().set_ylim(0, 3)    plt.show()plot_learning_curves(history)

八,调用估计器

print(model.evaluate(x_test_scaled, y_test, verbose=0))

九,代码总结

#!/usr/bin/env python3# -*- coding: utf-8 -*-import matplotlib as mplimport matplotlib.pyplot as pltimport numpy as npimport sklearnimport pandas as pdimport osimport sysimport timeimport tensorflow as tffrom tensorflow import keras# 1,打印使用的python库的版本信息print(sys.version_info)for module in mpl, np, pd, sklearn, tf, keras:    print(module.__name__, module.__version__)# 2,从keras.datasets中提取图片数据集-“训练数据”、“验证数据”、“测试数据”,并打印其维度fashion_mnist = keras.datasets.fashion_mnist(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data()x_valid, x_train = x_train_all[:5000], x_train_all[5000:]y_valid, y_train = y_train_all[:5000], y_train_all[5000:]print(x_valid.shape, y_valid.shape)print(x_train.shape, y_train.shape)print(x_test.shape, y_test.shape)# 3,对数据标准化处理# x = (x - u) / stdfrom sklearn.preprocessing import StandardScalerscaler = StandardScaler()# x_train: [None, 28, 28] -> [None, 784]x_train_scaled = scaler.fit_transform(    x_train.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)x_valid_scaled = scaler.transform(    x_valid.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)x_test_scaled = scaler.transform(    x_test.astype(np.float32).reshape(-1, 1)).reshape(-1, 28, 28)# 4,构建DNN深度神经网络模型# tf.keras.models.Sequential()model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(30):    model.add(keras.layers.Dense(100, activation="relu"))model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy",              optimizer = keras.optimizers.SGD(0.01),              metrics = ["accuracy"])# 5,查看模型整体结构-及参数print(model.summary())# 6,添加回调函数、训练模型# Tensorboard, earlystopping, ModelCheckpointlogdir = './dnn-callbacks'if not os.path.exists(logdir):    os.mkdir(logdir)output_model_file = os.path.join(logdir,"fashion_mnist_model.h5")callbacks = [    keras.callbacks.TensorBoard(logdir),    keras.callbacks.ModelCheckpoint(output_model_file,save_best_only = True),    keras.callbacks.EarlyStopping(patience=10, min_delta=1e-3),]history = model.fit(x_train_scaled, y_train, epochs=20,                    validation_data=(x_valid_scaled, y_valid),                    callbacks = callbacks)# 7,绘制训练模型中,变化过程def plot_learning_curves(history):    pd.DataFrame(history.history).plot(figsize=(8, 5))    plt.grid(True)    plt.gca().set_ylim(0, 3)    plt.show()plot_learning_curves(history)# 1. 参数众多,训练不充分# 2. 梯度消失 -> 链式法则 -> 复合函数f(g(x))# 8,调用估计器print(model.evaluate(x_test_scaled, y_test, verbose=0))

转载地址:http://qpili.baihongyu.com/

你可能感兴趣的文章
QTP的智能识别(Smart Identification)过程
查看>>
LoadRunner各协议所需耗费的内存资源表
查看>>
AutomatedQA收购Smart Bear?
查看>>
使用QTP进行WEB页面性能测试
查看>>
LoadRunner的VS.NET 2005插件
查看>>
LoadRunner中如何验证下载的文件大小、统计下载时间、度量下载速度?
查看>>
LoadRunner脚本评审Checklist
查看>>
在LoadRunner中设置HTTP请求time-out的时间
查看>>
在LoadRunner脚本中实现随机ThinkTime
查看>>
LoadRunner9.51中文帮助手册
查看>>
RPT录制问题
查看>>
RPT8.0
查看>>
RPT8.1新特性
查看>>
LoadRunner测试AJAX
查看>>
LoadRunner测试GWT
查看>>
负载测试项目成功的5个关键要素
查看>>
LoadRunner性能测试培训大纲
查看>>
LoadRunner测试J2ME的Socket程序
查看>>
《QTP自动化测试实践》要出第二版了!
查看>>
用LoadRunner开发开心网外挂
查看>>