-
jupyter的安装
参考:Windows环境下Jupyter的安装 -
tf.seras中CallBacks(回调函数)的使用
(1)callback的目录结构:
(2)代码的实现
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
from tensorflow import keras
print(tf.__version__)
print(sys.version_info)
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:]
print(x_valid.shape,y_valid.shape)
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)
#归一化
# x = (x - u) /std
from sklearn.preprocessing import StandardScaler
scaler = 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.fit_transform(
x_valid.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)
#使用Keras Model函数 tf.keras.models.Sequential()
"""
model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape = [28, 28]))
model.add(keras.layers.Dense(300, activation="relu")) #全连接层 300个单元
model.add(keras.layers.Dense(100, activation="relu"))
model.add(keras.layers.Dense(10, activation="softmax"))
"""
model = keras.models.Sequential([
keras.layers.Flatten(input_shape = [28, 28]),
keras.layers.Dense(300, activation="relu"),
keras.layers.Dense(100, activation="relu"),
keras.layers.Dense(10, activation="softmax")
])
#relu: y = max(0,x)
#softmax:将向量变成概率分布
#optimizer采用sgd的话,会导致loss=nan 导致梯度弥散
#optimizer采用adam的话,在梯度弥散 上对w和x都有优化
model.compile(loss = "sparse_categorical_crossentropy",
optimizer = "adam",
metrics = ["accuracy"])
#回调函数 Tensorboard, earlystopping, ModelCheckpoint
logdir = "./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)
- 启动TensorBorad查看
(1)浏览器登录localhost:6006
4.模型文件与Tensorboard文件