Recientemente, estaba entrenando la red. La pérdida y la precisión de la red se emitían en el terminal, que no era intuitivo y no se podía ver. Me preguntaba si había una herramienta que pudiera realizar el proceso de entrenamiento de dibujar el modelo en tiempo real, y luego lo encontré Visdom, encontré que esto es algo bueno, satisface completamente mis necesidades, estúdielo y regístrelo aquí para futuras referencias.
Una introducción muy detallada: el uso de la herramienta de visualización de aprendizaje profundo visdom
PyTorch usa Visdom para dibujar la curva del proceso de entrenamiento
Introducción
Página de inicio de github de Visdom : https://github.com/fossasia/visdom
Referencia del documento chino de Visdom : https://ptorch.com/news/77.html
Visdom es una herramienta de visualización de datos de código abierto desarrollada por FaceBook.Con sus funciones simples y fáciles de usar, se convirtió rápidamente en una herramienta de visualización de datos para PyTorch.
El objetivo de Visdom es facilitar la visualización de datos (remotos), con énfasis en apoyar experimentos científicos. Difundir dibujo para ti y tus colaboradores: visualización de videos, imágenes, texto y más.
Instalar Visdom
visdom requiere un entorno python3, la instalación es relativamente simple y se puede instalar directamente con pip:
pip install visdom
Usos de Visdom
python -m visdom.server
Luego abra el enlace devuelto en su navegador:http://loaclhost:8097
import visdom
Seleccione la ventana del entorno, y también puede seleccionar otras ventanas aquí. El nombre de la ventana es el principal aquí en Entorno en la parte superior del navegador después de abrirlo.
vis = visdom.Visdom(env='main') # 设置环境窗口的名称,如果不设置名称就默认为main
Cree una nueva ventana de imagen en este entorno, esta oración no debe colocarse en cada iteración
opt = {
'xlabel': 'epochs', # 横坐标名称
'ylabel': 'loss_value', # 纵坐标名称
'title': 'loss' # 标题是loss
}
#在环境窗口建立一个新的图窗,图窗标题是loss
loss_window = vis.line(
X=[0],
Y=[0],
opts=opt
)
Esta oración se coloca en cada iteración:
vis.line(X=[epoch], Y=[对应的loss值], win=loss_window, opts=opt, update='append')
Ponerlo en el código de entrenamiento de la red neuronal es el siguiente:
#训练模型
vis = visdom.Visdom(env='main') # 设置环境窗口的名称,如果不设置名称就默认为main
opt = {
'xlabel': 'epochs',
'ylabel': 'loss_value',
'title': 'SGD_loss'
}
loss_window = vis.line(
X=[0],
Y=[0],
opts=opt
)
for epoch in range(400):
y_pred = model(x_data)
loss = criterion(y_pred, y_data)
print(epoch, loss.item())
#所有梯度归零化
optimizer.zero_grad()
#反向传播求出梯度
loss.backward()
#更新权重和偏置值,即w和b
optimizer.step()
vis.line(X=[epoch], Y=[loss.item()], win=loss_window, opts=opt, update='append')
Referencias
La herramienta de visualización de datos Visdom dibuja la curva de pérdida