Si un amigo me preguntara esto, probablemente sugeriría que fuera a buscar TensorFlow.
Estoy muy emocionado con PyTorch, ¡es un super proyecto, muy prometedor! Definitivamente lo intentaré y lo seguiré con atención.
Por otro lado, TensorFlow es mucho más maduro, está documentado y ya hay toneladas de tutoriales y artículos al respecto. Esto, para mí, es más importante para alguien que hace esa pregunta.
- ¿Cuál es la diferencia entre diferentes tamaños de kernel convolucional como 3 × 3 y 5 × 5? ¿Existe alguna teoría al respecto?
- ¿Qué debe saber un profesional de aprendizaje profundo para un hackathon?
- Dado el mismo tamaño de lote, ¿hay algún beneficio en transferir la capacitación CNN de una sola GPU a múltiples GPU (para un tamaño de lote de 128 en 4 GPU, cada GPU procesará 32 muestras)?
- ¿Qué puede hacer el aprendizaje automático además de la clasificación? ¿Hay más?
- ¿Qué es una red de detección como YOLO o SSD en el aprendizaje automático?
Pregúnteme en un año y compararía actuaciones, características, etc. Pero por ahora, recomendaría TensorFlow.
A2A, espero que ayude
EDITAR: Actualización 2018
Como la gente me pidió que actualizara, 1 año después de la publicación inicial, aquí está. Hablaré sobre las diferencias que considero más importantes, luego daré mi conclusión personal.
La primera diferencia ha sido, la filosofía de ejecución. En TensorFlow, primero se debe diseñar el modelo ejecutando algún tipo de código declarativo y luego ejecutarlo utilizando los llamados [math] tf.Sessions [/ math]. En la práctica, hace que sea más difícil depurar y realmente experimentar con él. Por otro lado, pytorch es dinámico, se ejecuta de una manera más procesal, lo que permite mirar dentro de la caja y ver qué sucede en el paso intermedio. Este ha sido un argumento importante en ese momento, pero ahora es menos cierto ahora que la ejecución dinámica se puede usar en TensorFlow (que se llama Ejecución ansiosa).
Además, descubrí que TensorFlow está “ocultando” muchos detalles. Esto no es bueno ni malo. Se trata de si te gusta o no. Es bueno que uno pueda entender fácilmente lo que está sucediendo. Hay nombres de objetos y funciones que tienen sentido, lo mismo para el parámetro, un modelo complejo podría ser entendido por cualquiera. Por otro lado, entrar en detalles puede ser una pesadilla porque el código que realmente se ejecuta se divide en docenas de archivos, funciones, etc. Por lo tanto, es más claro en la superficie, pero es más difícil entrar en detalles. Me gusta decir que Pytorch tiene bloques de construcción más pequeños. Escribir su propia capa será increíblemente simple mientras solo usa estructuras realmente simples como proyecciones lineales, algunas funciones de activación. Puede que tenga que escribir un poco más, pero crea un código increíblemente claro, más cercano a la realidad de lo que se ha publicado.
Ambas son herramientas muy útiles, pero no todos necesitamos las mismas herramientas, supongo. Como estoy orientando la investigación, mi necesidad diaria es poder comprender cómo funcionan las cosas, experimentar e implementar documentos. Para esto, Pytorch es realmente muy útil y agradable. Encontré que TensorFlow parece mágico y frustrante para esto.
TensorFlow puede ser más útil para un entorno de producción si no desea meterse con lo que considera detalles inútiles.
Conclusión : si un amigo me preguntara esto, primero trataría de entender sus necesidades (¿qué quieres hacer? ¿Aprender?), Luego presentar las diferencias y dar mi consejo final.
Traté de dar un punto de vista objetivo, pero ciertamente fue sesgado por mi propia experiencia, después de eso es exactamente sobre lo que estoy escribiendo.