[Tensorflow] resumen del tensorboard

cada blog, cada lema: Lo que no te mata te hace más fuerte.

0. Prefacio

Tonterías: no he escrito mucho en blogs durante un tiempo, tal vez estaba pescando. (Feliz riego :))
Esta sección resume principalmente el uso de los dos tipos de tableros de tenor y proporciona soluciones para varios archivos events.out.tfevent que no se pueden mostrar en la misma imagen.
Nota: Es posible que se agregue en el futuro.

1. Texto

¿Qué es tensorboard?
Puede entenderse simplemente como guardar los cambios en la precisión y la pérdida durante el entrenamiento
.
1. No se limita a esto, también puede guardar información como gráficos de cálculo.
2. Este artículo evitará principalmente precisión y pérdida

1.1 Método 1: función de devolución de llamada

Guardar como archivo de formato .h5

1.1.1 Guardar

Podemos configurarlo en la función de devolución de llamada. Parte del código es el siguiente:

# 回调函数 Tensorboard(文件夹)\earylystopping\ModelCheckpoint(文件名)
logdir = os.path.join("callbacks")
print(logdir)
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)

1.1.2 Pantalla

Ingrese el siguiente código en la terminal

tensorboard --logdir=callbacks

Nota:

  1. El entorno actual en el que se encuentra debe tener tensorflow
  2. Las devoluciones de llamada en el código anterior son la ruta de sus devoluciones de llamada

La pantalla es la siguiente:
Inserte la descripción de la imagen aquí
ingrese en el navegador: http: // localhost: 6006 /
para ver:
Inserte la descripción de la imagen aquí
los pasos detallados se refieren al enlace después del texto

1.2 Método 2: tf.summary

Guardar como un archivo similar a "events.out.tfevents.1608523036.leeP510.26215.5.v2"

1.2.1 Guardar

Crear identificador de escritura

# 训练和验证summary文件的保存位置,用于在tensorboard中查看训练的参数(accuary,loss)的变化
train_writer = tf.summary.create_file_writer(train_log_dir)
valid_writer = tf.summary.create_file_writer(valid_log_dir)

Genere objetos para precisión, función de pérdida y optimizador

# 准确度、损失函数、优化器
accuracy = metrics.BinaryAccuracy()  # 二分类准确度 训练集上
accuracy_val = metrics.BinaryAccuracy()  # 二分类准确度计算 验证集上
loss_bc = losses.BinaryCrossentropy()  # 损失函数
optimizer = optimizers.Adam(learning_rate=self.learning_rate, beta_1=self.args.beta1)

Tome el conjunto de validación como ejemplo:
obtenga precisión, pérdida, etc.

# 2. 验证集上
epoch_total_val_loss = []  # 一个epoch内的loss
for i, (x_val_batch, y_val_batch) in enumerate(valid_data):
    # 模型产生预测图
    pred_val = model(x_val_batch)
    # 模型产生的预测图(包括模型中间产生的预测图)与标签与交叉熵计算
    v_logits, v_loss = pre_process_binary_cross_entropy(loss_bc, pred_val, y_val_batch)
    # 用模型最后产生的预测图和真实标签更新准确度
    accuracy_val.update_state(y_true=y_val_batch, y_pred=v_logits[-1])
    # 保存一次迭代的损失
    epoch_total_val_loss.append(v_loss.numpy())

val_acc = accuracy_val.result()  # 获取准确度

epoch_total_val_loss = np.array(epoch_total_val_loss)  # 列表损失转数组
print('-------epoch(validation):', epoch, 'val loss:', epoch_total_val_loss.mean(), 'accuracy:',
      val_acc.numpy())

Guardar y restablecer

# 保存验证集上的summary(loos,accurcy)
with valid_writer.as_default():
    tf.summary.scalar('loss', epoch_total_val_loss.mean(), step=epoch)
    tf.summary.scalar('accuracy', val_acc.numpy(), step=epoch)

# 重置准确度
accuracy.reset_states()
accuracy_val.reset_states()

1.2.2 Pantalla

Escriba en la terminal:

tensorboard --logdir=D:\Data_saved\Desktop\tes\服务器\train

De la siguiente manera:
Inserte la descripción de la imagen aquí
navegador e ingrese la URL anterior:
Inserte la descripción de la imagen aquí
problemas:
entrenamiento y validación de indicadores almacenados en dos archivos, pero no sé cómo se muestra una imagen del total (similar a los resultados del primer método anterior)
Solución:
El archivo problemático organización:

-test
	-log
		events.out.tfevents.1608522481.DESKTOP-IIN3E21.2448.13.v2
		events.out.tfevents.1608523036.leeP510.26215.13.v2

Inserte la descripción de la imagen aquí

mando:

tensorboard --logdir=D:\Data_saved\Desktop\tes\服务器\train

Inserte la descripción de la imagen aquí

Activar los
gráficos del tensorboard se vuelve desordenado.
Inserte la descripción de la imagen aquí
Nueva organización de archivos

-test
	-train
		events.out.tfevents.1608522481.DESKTOP-IIN3E21.2448.13.v2
	-valid
		events.out.tfevents.1608523036.leeP510.26215.13.v2

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Comando:
Nota: La carpeta en el comando solo va al directorio principal

tensorboard --logdir=D:\Data_saved\Desktop\tes\服务器

Inserte la descripción de la imagen aquí
Resultado: En
la figura, las líneas de la figura se nombran de acuerdo con el nombre de la carpeta (tren / válido).
Inserte la descripción de la imagen aquí
De acuerdo, sobreajusté y caí :(

referencias

[1] https://www.cnblogs.com/Java3y/p/10740196.html
[2] https://blog.csdn.net/weixin_39190382/article/details/104113449
[3] https: //blog.csdn .net / m0_37188294 / article / details / 84999265
[4] https://www.pianshen.com/article/316476506/
[5] https://www.94e.cn/info/2232

Supongo que te gusta

Origin blog.csdn.net/weixin_39190382/article/details/111604582
Recomendado
Clasificación