Google hat vor kurzem die Clould ML, https://cloud.google.com/ml/ angekündigt und es ist sehr nützlich. Eine Einschränkung ist jedoch, dass die Eingabe/Ausgabe eines Tensorflow-Programms gs: // unterstützen sollte.Google Storage (gs) Wrapper-Datei für Cloud ML ein/aus?
Wenn wir alle Tensorflow APIS zum Lesen/Schreiben von Dateien verwenden, sollte es in Ordnung sein, da diese APIs gs://
unterstützen.
Wenn wir jedoch native Datei verwenden IO APIs wie open
, funktioniert es nicht, weil sie gs://
Zum Beispiel nicht verstehen:
with open(vocab_file, 'wb') as f:
cPickle.dump(self.words, f)
Dieser Code wird nicht funktionieren in Google Cloud ML.
Das Ändern aller nativen Datei-IO-APIs in Tensorflow-APIs oder Google Storage Python-APIs ist jedoch sehr mühsam. Gibt es einen einfachen Weg, dies zu tun? Alle Wrapper zur Unterstützung von Google Storage Systems, gs://
auf der nativen Datei IO?
Wie hier vorgeschlagen Pickled scipy sparse matrix as input data?, vielleicht können wir file_io.read_file_to_string('gs://...')
verwenden, aber immer noch dies erfordert signifikante Code-Änderung.
Dank! Das sieht sehr gut aus. Ich denke, Tensorflow file_io könnte auch eine Lösung sein. 'mit file_io.FileIO (Dateipfad, mode =" w ") als f'. Denkst du, dass es auch OK ist? Ich habe es noch nicht vollständig getestet. –
Ich interpretierte Ihre Frage so, als wolle ich vermeiden, alle offenen() Funktionsaufrufe durch spezielle Funktionen ersetzen zu müssen. Wenn das nicht der Fall ist, d. H. Sie sind bereit, Aufrufe von open() zu ersetzen, dann sind gcsio.open_local_or_gcs und file_io.FileIO ziemlich ähnlich, beeinflusst nur, welche Abhängigkeiten Sie mitbringen - file_io ist bereits Teil von TF. Aber FileIO verwendet einige Nicht-Standard-Modi, so dass dies auch Ihre Entscheidung beeinflussen kann. – rhaertel80