Pytroch logra diferentes resultados para entrenamiento y prueba
Hemos dicho antes que model.train()
él model.eval()
es propicio para la realización de BN y deserción. ¿Por qué es esto?
¡Porque BN y Dropout tienen operaciones diferentes para entrenamiento y prueba! Por eso, debemos distinguir entre entrenamiento y prueba.
Antes de entrenar o probar el código, estipulamos:
- Entrenamiento para agregar
model.train()
- Prueba para agregar
model.eval()
Esto se debe a que el training
atributo may de tal modelo está establecido true
o false
. De esta forma sabremos si el modelo ha sido entrenado.
class Model(nn.Module):
def __init__(self):
pass
def isTraining(self):
if self.training:
return True
else:
return False
model = Model()
model.train()
print(model.training)
model.isTraining()
model.eval()
print(model.training)
model.isTraining()
result:
True
True
False
False