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:
- El entorno actual en el que se encuentra debe tener tensorflow
- Las devoluciones de llamada en el código anterior son la ruta de sus devoluciones de llamada
La pantalla es la siguiente:
ingrese en el navegador: http: // localhost: 6006 /
para ver:
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:
navegador e ingrese la URL anterior:
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
mando:
tensorboard --logdir=D:\Data_saved\Desktop\tes\服务器\train
Activar los
gráficos del tensorboard se vuelve desordenado.
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
Comando:
Nota: La carpeta en el comando solo va al directorio principal
tensorboard --logdir=D:\Data_saved\Desktop\tes\服务器
Resultado: En
la figura, las líneas de la figura se nombran de acuerdo con el nombre de la carpeta (tren / válido).
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