python numpy tensorflow google-cloud-ml

python - Cargar numpy array en el trabajo de google-cloud-ml



tensorflow (2)

En el modelo que quiero lanzar, tengo algunas variables que deben inicializarse con valores específicos.

Actualmente almaceno estas variables en matrices numpy, pero no sé cómo adaptar mi código para que funcione en un trabajo de google-cloud-ml.

Actualmente inicializo mi variable así:

my_variable = variables.model_variable(''my_variable'', shape=None, dtype=tf.float32, initializer=np.load(''datasets/real/my_variable.npy''))

Alguien me puede ayudar ?


Intenté la respuesta aceptada pero me encontré con algunos problemas. Finalmente esto funcionó para mí (Python 3):

from io import BytesIO import numpy as np from tensorflow.python.lib.io import file_io

Ahorrar:

dest = ''gs://[BUCKET-NAME]/'' # Destination to save in GCS np.save(file_io.FileIO(dest, ''w''), np.ones((100, )))

Cargar:

f = BytesIO(file_io.read_file_to_string(src, binary_mode=True)) arr = np.load(f)


Primero, deberá copiar / almacenar los datos en GCS (usando, por ejemplo, gsutil ) y asegurarse de que su script de entrenamiento tenga acceso a ese depósito. La forma más fácil de hacerlo es copiar la matriz en el mismo depósito que sus datos, ya que es probable que ya haya configurado ese depósito para el acceso de lectura. Si el depósito está en el mismo proyecto que su trabajo de capacitación y siguió these instrucciones (en particular, gcloud beta ml init-project ), debe estar configurado. Si los datos estarán en otro depósito, consulte these instrucciones.

Luego deberá usar una biblioteca capaz de cargar datos desde GCS. Tensorflow incluye un módulo que puede hacer esto, aunque puede usar cualquier biblioteca cliente que pueda leer desde GCS. Aquí hay un ejemplo del uso del módulo file_io de TensorFlow:

from StringIO import StringIO import tensorflow as tf import numpy as np from tensorflow.python.lib.io import file_io # Create a variable initialized to the value of a serialized numpy array f = StringIO(file_io.read_file_to_string(''gs://my-bucket/123.npy'')) my_variable = tf.Variable(initial_value=np.load(f), name=''my_variable'')

Tenga en cuenta que tenemos que leer el archivo en una cadena y usar StringIO , ya que file_io.FileIO no implementa completamente la función de búsqueda requerida por numpy.load .

Bonificación: en caso de que sea útil, puede almacenar directamente una matriz numpy en GCS utilizando el módulo file_io , por ejemplo:

np.save(file_io.FileIO(''gs://my-bucket/123'', ''w''), np.array([[1,2,3], [4,5,6]]))

Para Python 3, use from io import StringIO lugar de from StringIO import StringIO .