Path: blob/master/site/es-419/tutorials/customization/custom_layers.ipynb
25118 views
Copyright 2018 The TensorFlow Authors.
Capas personalizadas
Como API de alto nivel para construir redes neuronales, recomendamos usar tf.keras
. Sin embargo, la mayoría de las API de TensorFlow son utilizables con eager execution.
Capas: grupos comunes de operaciones útiles
Cuando escriba código para modelos de aprendizaje automático, normalmente querrá operar a un nivel de abstracción superior al de las operaciones simples y la manipulación de variables.
Muchos modelos de aprendizaje automático pueden expresarse como formada por capas relativamente simples pero arregladas y apiladas. TensorFlow ofrece tanto un grupo de muchas capas comunes como formas sencillas para que usted escriba sus propias capas específicas de la aplicación, ya sea desde cero o como una composición de capas existentes.
TensorFlow viene con la API Keras completa en el paquete tf.keras, y las capas Keras son muy útiles si desea construir sus propios modelos.
Consulte la documentación para ver la lista completa de capas preexistentes. Entre ellas se encuentran Dense (una capa totalmente conectada), Conv2D, LSTM, BatchNormalization, Dropout y muchas otras.
Implementar capas personalizadas
La mejor forma de implementar su propia capa es extender la clase tf.keras.Layer e implementar:
__init__
, donde puede hacer toda la inicialización independiente de la entradabuild
, donde usted sabe las formas de los tensores de entrada y puede hacer el resto de la inicialización por sí mismo.call
, donde usted realiza computación hacia adelante
Tenga en cuenta que no tiene que esperar hasta que se llame a build
para crear sus variables. También puede crearlas en __init__
. Sin embargo, la ventaja de esperar a build
es que le permite crear variables en una fase posterior según la forma de las entradas sobre las que operará la capa. Y a la inversa, crear variables en __init__
significa que las formas necesarias para crear las variables tienen que definirse explícitamente.
El código en su conjunto es más fácil de leer y mantener si usa capas estándares siempre que sea posible, ya que los demás usuarios estarán familiarizados con el comportamiento de estas capas. ¡Considere la posibilidad de registrar una incidencia en github o, mejor aún, de enviarnos una solicitud de incorporación si desea usar una capa que no está en tf.keras.layers
!
Modelos: Composición de capas
En los modelos de aprendizaje automático, muchas cosas interesantes parecidas a las capas se implementan al hacer composiciones de capas existentes. Por ejemplo, cada bloque residual en una retícula es una composición de convoluciones, normalizaciones de lotes y un enlace. Puede anidar capas dentro de otras capas.
Normalmente se hace herencia de keras.Model
cuando se necesita los métodos del modelo como Model.fit
, Model.evaluate
y Model.save
(para más detalles, consulte Capas y modelos personalizados de Keras).
Otra característica de keras.Model
(en lugar de keras.layers.Layer
) es que no sólo realiza un seguimiento de las variables, sino que un keras.Model
también sigue sus capas internas, lo que simplifica su inspección.
Por ejemplo, aquí hay un bloque ResNet:
La mayoría de las veces, sin embargo, los modelos que constan de muchas capas simplemente llaman a una capa tras otra. Esto puede hacerse con muy poco código usando tf.keras.Sequential
:
Siguientes pasos
Ya puede volver al bloc de notas anterior y adaptar el ejemplo de regresión lineal usando capas y modelos para que esté mejor estructurado.