Tensorflow2.0 utilise des paramètres de rappel et l'utilisation de Tensorboard
Cet article est basé sur l'article précédent tensorflow2.0 identifiant l'ensemble de données fashion_mnist . Lors de l'apprentissage de (model.fit ()), le paramètre callbacks est ajouté. Il existe trois paramètres principaux:
- Tensorboard
- Arrêt anticipé
- ModèleCheckpoint
Le code détaillé est le suivant:
Remarque: la précision de ce code est la même que dans l'article précédent. Cet article explique principalement Tensorboard
#-*- coding:utf-8 _*-
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(sys.version_info)
for module in tf, mpl, np, pd, sklearn, tf, keras:
print(module.__name__, module.__version__)
# 指定GPU
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"
os.environ["CUDA_VISIBLE_DEVICES"] = '1'
config = tf.compat.v1.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.compat.v1.Session(config=config)
# 导入数据集 fashion_mnist
fashion_mnist = keras.datasets.fashion_mnist
(x_train_all,y_train_all),(x_test_all,y_test_all) = 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:]
x_test , y_test = x_test_all,y_test_all
print(x_train.shape,y_train.shape)
print(x_valid.shape,y_valid.shape)
print(x_test.shape,y_test.shape)
# 数据归一化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
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)
# 模型建立
model = tf.keras.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')
])
# 模型编译
model.compile(loss='sparse_categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
# 模型训练 history.history是一个重要的参数
# callbacks : Tensorborad,earlystopping,ModelCheckpoint
logdir = './callbacks'
if not os.path.exists(logdir):
os.makedirs(logdir)
output_model_file = os.path.join(logdir,'fashion_minst_models.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)
# 绘制history图像
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)
Une fois le code exécuté, un dossier de rappels sera généré:
Ensuite, entrez dans la ligne de commande telle que cmd
tensorboard --logdir=D:[你自己的具体的目录下]/callbacks
Ou utilisez cd pour passer d'abord à un répertoire spécifique, puis utilisez la commande ci-dessus,
puis ouvrez http: // localhost: 6006 dans le navigateur pour
voir le contenu comme indiqué dans la figure ci-dessous: