ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Tensorflow2.0--Keras实战

2020-06-22 21:03:38  阅读:289  来源: 互联网

标签:实战 keras Keras 28 Tensorflow2.0 callbacks train logdir model


import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
#使用sklearn库的数据归一化模块
from sklearn.preprocessing import StandardScaler
from tensorflow import keras
#可以查看各模块版本,方便复用
# for module in mpl, np, pd, sklearn, tf, keras:
# print(module.__name__, module.__version__)

# 数据读取
# 加载数据集
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:]

# 数据归一化,使梯度下降更加高效,模型效果提升
scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_test_scaled = scaler.fit_transform(x_test.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)
x_valid_scaled = scaler.fit_transform(x_valid.astype(np.float32).reshape(-1,1)).reshape(-1,28,28)

# 搭建模型
# 创建模型空间
model = keras.models.Sequential()
#将矩阵展平成向量,因为这里使用全连接层进行学习
model.add(keras.layers.Flatten(input_shape = [28,28]))
#使用for循环搭建具有一定深度的网络
for _ in range(10):
#这里selu激活函数在relu的基础上加入了数据的归一化,Dense为全连接层
model.add(keras.layers.Dense(50,activation = 'selu'))
#添加BN层
model.add(keras.layers.BatchNormalization())
#添加Dropout层,使网络稀疏。这里主要是为了展示keras如何添加丰富的网络层。如果要求高精度可以自行测试
#AlphaDropout不影响数据归一化等操作。
model.add(keras.layers.AlphaDropout(rate = 0.3))
model.add(keras.layers.Dense(10,activation = 'softmax'))

# 模型编译,选择loss_function,优化器,与观测指标
model.compile(optimizer = 'sgd',
loss = 'sparse_categorical_crossentropy',
metrics = ['accuracy'])
#这里可以查看模型内容,即网络层内容
# print(model.summary())

# 设置回调函数(模型保存,模型可视化等)。调用时在终端输入:tensorboard --logdir=logdir_path 即可返回一个网络端口,复制到浏览器中可查看
logdir = os.path.join('dnn-selu-bn-dropout-callbacks')
if not os.path.exists(logdir):
os.mkdir(logdir)
output_model_file = os.path.join(logdir,'fashion-mnist.h5')
callbacks = [keras.callbacks.TensorBoard(logdir),#配置tensorboard的log文件
keras.callbacks.ModelCheckpoint(output_model_file,
save_best_only = True),#配置最终模型文件
keras.callbacks.EarlyStopping(patience=5,min_delta=1e-3)]#设置提前停止条件

# 模型训练
history = model.fit(x_train_scaled,y_train,
epochs = 20,#设置学习迭代轮数,将所有数据计算完算一轮
validation_data = (x_valid_scaled,y_valid),#设置验证集
callbacks = callbacks)#设置callbacks参数


# 绘制模型曲线
def plot_learning_curves(history):
pd.DataFrame(history.history).plot(figsize = (8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()

plot_learning_curves(history)

# 模型测试
# model.evaluate(x_test_scaled,y_test)




标签:实战,keras,Keras,28,Tensorflow2.0,callbacks,train,logdir,model
来源: https://www.cnblogs.com/peiziming/p/13179091.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有