本文共 7204 字,大约阅读时间需要 24 分钟。
本文将详细介绍:
model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(20): model.add(keras.layers.Dense(100, activation="relu")) model.add(keras.layers.BatchNormalization())# 批标准化 """ model.add(keras.layers.Dense(100)) model.add(keras.layers.BatchNormalization()) model.add(keras.layers.Activation('relu')) """model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy", optimizer = keras.optimizers.SGD(0.001), metrics = ["accuracy"])
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,打印模型安装包版本号print(tf.__version__)print(sys.version_info)for module in mpl, np, pd, sklearn, tf, keras: print(module.__name__, module.__version__) # 2,加载模型数据-测试数据,测试数据,验证数据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,加载模型# tf.keras.models.Sequential()model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(1): model.add(keras.layers.Dense(100, activation="relu")) model.add(keras.layers.BatchNormalization())# 批标准化 # model.add(keras.layers.Dense(100)) # model.add(keras.layers.BatchNormalization()) # model.add(keras.layers.Activation('relu'))model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy", optimizer = keras.optimizers.SGD(0.001), metrics = ["accuracy"])# 5,查看模型层级model.summary()# 6,添加callback,并训练模型# Tensorboard, earlystopping, ModelCheckpointlogdir = './dnn-bn-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=5, min_delta=1e-3),]history = model.fit(x_train_scaled, y_train, epochs=10, validation_data=(x_valid_scaled, y_valid), callbacks = callbacks)# 7,使用matplotlib画损失,正确率变化图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,使用估计器计算测试数据的准确率model.evaluate(x_test_scaled, y_test, verbose=0)
model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(1): model.add(keras.layers.Dense(100, activation="selu")) # model.add(keras.layers.BatchNormalization())# 批标准化 # model.add(keras.layers.Dense(100)) # model.add(keras.layers.BatchNormalization()) # model.add(keras.layers.Activation('relu'))model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy", optimizer = keras.optimizers.SGD(0.001), metrics = ["accuracy"])
详细的介绍dropout的文章摘录如下:
model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(20): model.add(keras.layers.Dense(100, activation="selu"))model.add(keras.layers.AlphaDropout(rate=0.5))# AlphaDropout: 1. 均值和方差不变 2.标准化性质也不变# model.add(keras.layers.Dropout(rate=0.5))model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy", optimizer = keras.optimizers.SGD(0.001), metrics = ["accuracy"])
#!/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,打印模型安装包版本号print(tf.__version__)print(sys.version_info)for module in mpl, np, pd, sklearn, tf, keras: print(module.__name__, module.__version__) # 2,加载模型数据-测试数据,测试数据,验证数据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,加载模型# tf.keras.models.Sequential()model = keras.models.Sequential()model.add(keras.layers.Flatten(input_shape=[28, 28]))for _ in range(20): model.add(keras.layers.Dense(100, activation="selu"))model.add(keras.layers.AlphaDropout(rate=0.5))# AlphaDropout: 1. 均值和方差不变 2. 标准化性质也不变# model.add(keras.layers.Dropout(rate=0.5))model.add(keras.layers.Dense(10, activation="softmax"))model.compile(loss="sparse_categorical_crossentropy", optimizer = keras.optimizers.SGD(0.001), metrics = ["accuracy"])# 5,查看模型层级model.summary()# 6,添加callback,并训练模型# Tensorboard, earlystopping, ModelCheckpointlogdir = './dnn-bn-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=5, min_delta=1e-3),]history = model.fit(x_train_scaled, y_train, epochs=10, validation_data=(x_valid_scaled, y_valid), callbacks = callbacks)# 7,使用matplotlib画损失,正确率变化图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,使用估计器计算测试数据的准确率model.evaluate(x_test_scaled, y_test, verbose=0)
转载地址:http://epili.baihongyu.com/