Tensorflow: ¿Cómo inicializar la capa de incrustaciones dentro de la API de Estimator?

Creado en 12 ene. 2018  ·  3Comentarios  ·  Fuente: tensorflow/tensorflow

Estoy tratando de usar incrustaciones existentes dentro del modelo de tensorflow, el tamaño de incrustación es mayor que 2Gb y esto hace que mi intento original de hacer esto no sea exitoso:

embedding_var = tf.get_variable(
        "embeddings", 
        shape=GLOVE_MATRIX.shape, 
        initializer=tf.constant_initializer(np.array(GLOVE_MATRIX))
)

Lo que me dio este error:

Cannot create a tensor proto whose content is larger than 2GB.

Estoy usando AWS SageMaker, que se basa en la API de Estimator, y la ejecución real del gráfico en la sesión ocurre detrás de escena, por lo que no estoy seguro de cómo inicializar algunos marcadores de posición para la incrustación dado eso. Sería útil si alguien pudiera compartir la forma de realizar dicha inicialización en términos de EstimatorAPI.


Vaya a Stack Overflow para obtener ayuda y soporte:

https://stackoverflow.com/questions/tagged/tensorflow

Si abre un problema de GitHub, aquí está nuestra política:

  1. Debe ser un error o una solicitud de función.
  2. Debe completar el siguiente formulario.
  3. No debería ser un problema de TensorBoard. Esos van aquí .

He aquí por qué tenemos esa política : los desarrolladores de TensorFlow responden a los problemas. Queremos centrarnos en el trabajo que beneficie a toda la comunidad, por ejemplo, corregir errores y agregar funciones. El apoyo solo ayuda a las personas. GitHub también notifica a miles de personas cuando se presentan problemas. Queremos que lo vean comunicando un problema interesante, en lugar de ser redirigido a Stack Overflow.


Información del sistema

  • ¿He escrito código personalizado (en lugar de usar un script de ejemplo de stock provisto en TensorFlow) ?
  • Plataforma y distribución del sistema operativo (por ejemplo, Linux Ubuntu 16.04) :
  • TensorFlow instalado desde (fuente o binario) :
  • Versión de TensorFlow (use el comando a continuación) :
  • Versión de Python :
  • Versión de Bazel (si se compila desde la fuente) :
  • Versión de GCC / Compiler (si se compila desde la fuente) :
  • Versión CUDA / cuDNN :
  • Modelo de GPU y memoria :
  • Comando exacto para reproducir :

Puede recopilar parte de esta información utilizando nuestro script de captura de entorno:

https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh

Puede obtener la versión de TensorFlow con

python -c "importar tensorflow como tf; print (tf.GIT_VERSION, tf.VERSION)"

Describe el problema

Describe el problema claramente aquí. Asegúrese de transmitir aquí por qué es un error en TensorFlow o una solicitud de función.

Código fuente / registros

Incluya cualquier registro o código fuente que pueda ser útil para diagnosticar el problema. Si incluye rastreos, incluya el rastreo completo. Se deben adjuntar registros y archivos grandes. Intente proporcionar un caso de prueba reproducible que sea el mínimo necesario para generar el problema.

awaiting response bug

Comentario más útil

Parece que la forma correcta de inicializar variables con incrustaciones sería usar tf.train.Scaffold . Aquí hay más información sobre esto en stackoverflow

Todos 3 comentarios

Creo que esto normalmente sería un tipo de problema de "enviar a StackOverflow" (respuesta estándar adjunta a continuación), pero el límite de 2 GB parece estar dentro del rango de un error o una solicitud de función.

@martinwicke @ispirmustafa ¿ alguna sugerencia?

Esta pregunta se hace mejor en StackOverflow ya que no es un error o una solicitud de función. También hay una comunidad más grande que lee preguntas allí. ¡Gracias!

Creo que está relacionado con el límite de tamaño del gráfico. el uso de constant_initializer incrusta GLOVE_MATRIX en el gráfico, lo que aumenta el tamaño del gráfico.
¿Podría intentar utilizar un inicializador no constante?

Parece que la forma correcta de inicializar variables con incrustaciones sería usar tf.train.Scaffold . Aquí hay más información sobre esto en stackoverflow

¿Fue útil esta página
0 / 5 - 0 calificaciones