Hay que tener mucho cuidado a la hora de copiar arquitecturas de red con la asignación, esto puede traer consecuencias inesperadas que son muy difÃciles de depurar, a mà me pasó y les vengo a contar un poco.
Para resumir, cuando quieran crear una instancia de una red ya generada EVITEN a toda costa usar la asignación.
model2 = model1
Esto copiará la dirección de memoria del objeto model1 a model2, ¿qué significa esto? Que cuando modifiques model2, el primero también se modificará dado que no son objetos nuevos sino apuntadores al mismo espacio de memoria (voy a dejar la explicación en una respuesta).
En el caso del video no se nota totalmente, pero de manera inconsciente, al cargar los datos del hdf5 en model2, también se han cargado en model1.
La manera de copiar correctamente un modelo (porque se quiere mantener su arquitectura) sin generar un apuntador de memoria es con la función clone_model que viene de keras.models
from keras.models import clone_model
model2 = clone_model(model1)
Esto lo resalto por experiencia personal, dado que en mi proyecto personal copié una instancia de una red a otra, y cuando realiza el entrenamiento en el modelo 2, los datos del 1 se arruinaban y a la hora de probar el rendimiento siempre era inconsistente.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?