Una lucha de religión.
A la hora de comenzar cualquier proyecto con Deep Learning, surge la duda de
qué framework usar. Aunque podríamos hacer un recorrido histórico de los
distintos framework que ha habido (theano, caffe, keras…) la verdad es que
ahora mismo solo hay dos que «parten la pana»:
Tensorflow y Pytorch, el resto ha pasado a mejor vida o están en proceso de
hacerlo. Justo en el momento de empezar cualquier proyecto surge la gran duda: ¿cuál
utilizo?
Vayamos por partes, como dijo Jack, si te dedicas a la investigación,
como es mi caso, ya tengo la solución: Pytorch. No lo dudes. Solo tienes que
darte un vuelva por Arxiv o cualquier revista indexada y ver que el código que
acompaña a los artículos en su inmensa mayoría ya esta escrito en
Pytorch. ¿Por qué? Muy sencillo, si has sufrido en tus carnes Tensorflow 1 te
acordarás, si no te lo digo yo, lo poco pythonico que era: Eager execution,
false friends, grafos estáticos, tropecientos decoradores…
La “fusión” de keras con Tensorflow vino a facilitar un poco las cosas
(mejor un mucho)… Y aquí es otro de los puntos donde me gustaría aclarar un poco
el panorama: tensorflow proponía una sintaxis a muy bajo nivel en muchos
aspectos, mientras keras proponía por el contrario un nivel muy alto con métodos
como model.fit o history que te ahorran mucho tiempo. Y esta dualidad onda-corpúsculo
bueno mejor dicho esta dualidad lenguaje de bajo nivel y alto nivel es
precisamente la que, en mi caso, menos me termina de convencer. Si tienes que “toquetear”
algo a fuera de lo normal caes en una sintaxis a muy bajo nivel que complica mucho
las cosas. Por el contrario Pytorch se encuentra muy “balanceado” en ese compromiso.
Si quieres entrenar tu modelo tienes que “hacerte” tu bucle de entrenamiento… y
ahí siempre se puede meter mano y extraer muchos pasos intermedios que son muy interesantes
y que a la hora de tunear hiperparametros viene muy bien.