Google niedawno ogłosiła Clould ML, https://cloud.google.com/ml/ i jest bardzo przydatna. Jednak jednym ograniczeniem jest to, że wejście/wyjście z programu Tensorflow powinno obsługiwać gs: //.Wprowadzanie/zamykanie pliku opakowania Google Storage dla Cloud ML?
Jeśli używamy wszystkich tensorflow APIS do odczytu/zapisu plików, powinno być OK, ponieważ te API obsługują gs://
.
Jednakże, jeśli używamy natywnego pliku IO API, takich jak open
, to nie działa, ponieważ nie rozumieją gs://
na przykład:
with open(vocab_file, 'wb') as f:
cPickle.dump(self.words, f)
Ten kod nie będzie działać w Google Cloud ML.
Jednak modyfikowanie wszystkich macierzystych interfejsów API IO do interfejsów API tensorflow lub API Google Python jest naprawdę uciążliwe. Czy istnieje prosty sposób na zrobienie tego? Wszelkie opakowania do obsługi systemów pamięci masowej Google, gs://
na macierzystym pliku IO?
Zgodnie z sugestią tutaj Pickled scipy sparse matrix as input data?, być może możemy użyć file_io.read_file_to_string('gs://...')
, ale nadal wymaga to znacznej modyfikacji kodu.
Dzięki! To wygląda bardzo dobrze. Myślę, że Tensorflow file_io również może być rozwiązaniem. 'z file_io.FileIO (ścieżka_pliku, tryb =" w ") jako f'. Czy myślisz, że to też jest w porządku? Jeszcze nie w pełni testowałem. –
Zinterpretowałem twoje pytanie jako chcące uniknąć zastąpienia wszystkich wywołań funkcji open() wyspecjalizowanymi funkcjami. Jeśli tak nie jest, to znaczy, że chcesz zastąpić wywołania funkcji open(), wtedy gcsio.open_local_or_gcs i file_io.FileIO są dość podobne, wpływają tylko na zależności, które wprowadzasz - file_io jest już częścią TF. Ale FileIO wykorzystuje niektóre niestandardowe tryby, co może wpłynąć na twoją decyzję. – rhaertel80