2017-01-13 4 views
1

In dem Modell, das ich starten möchte, habe ich einige Variablen, die mit bestimmten Werten initialisiert werden müssen.Load numpy Array in Google-Cloud-ml-Job

Ich speichere diese Variablen derzeit in numpy Arrays, aber ich weiß nicht, wie ich meinen Code anpassen soll, damit er in einem Google-Cloud-ml-Job funktioniert.

Derzeit initialisieren ich meine Variable wie folgt aus:

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

Kann mir jemand helfen?

Antwort

10

Zuerst müssen Sie die Daten auf GCS kopieren/speichern (z. B. gsutil) und sicherstellen, dass Ihr Schulungsskript auf diesen Bereich zugreifen kann. Der einfachste Weg besteht darin, das Array in denselben Bucket wie Ihre Daten zu kopieren, da Sie diesen Bucket wahrscheinlich bereits für den Lesezugriff konfiguriert haben. Wenn sich der Bucket im selben Projekt wie Ihr Trainingsjob befindet und Sie die Anweisungen these (insbesondere gcloud beta ml init-project) befolgt haben, sollten Sie festlegen. Wenn sich die Daten in einem anderen Bucket befinden, lesen Sie die Anweisungen unter these.

Dann müssen Sie eine Bibliothek verwenden, die Daten von GCS laden kann. Tensorflow enthält ein Modul, das dies ermöglicht, obwohl Sie jede Client-Bibliothek verwenden können, die von GCS lesen kann. Hier ist ein Beispiel von TensorFlow der mit file_io Modul:

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') 

Beachten Sie, dass wir die Datei in einen String zu lesen und verwenden StringIO, da file_io.FileIO nicht vollständig die Funktion von numpy.load erforderlich suchen implementieren.

Bonus: falls es sinnvoll ist, können Sie direkt eine numpy Array GCS speichern die file_io Modul, z.B .:

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