Как загрузить файл .npz в Google Compute Engine - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть модель CNN, которую я хотел бы запустить в интерфейсе Jupyter, который подключен к экземпляру виртуальной машины в Google Compute Engine.У меня возникли проблемы с выяснением того, как читать данные из Jupyter и преобразовать данные фотоизображения в файл .npz, сохраненный в Google Cloud Storage Bucket.

Это то, что я пробовална данный момент:

def load_dataset():

    # load dataset

    data = load('gs://bucket/data.npz')
    X, y = data['arr_0'], data['arr_1']

    # separate into train and test datasets
    trainX, testX, trainY, testY = train_test_split(X, y, test_size=0.3, random_state=1)
    print(trainX.shape, trainY.shape, testX.shape, testY.shape)
    return trainX, trainY, testX, testY

Я подумал, что мог бы использовать функции gsutil для псевдонима пути к корзине и файлу, но получил сообщение об ошибке, говоря, что такого файла не существует.

Вот полный возврат:

enter image description here

1 Ответ

0 голосов
/ 23 сентября 2019

Мы могли бы предложить вам два разных способа.

Один из них заключается в том, что Python вызывает gsutil на загрузку объекта облачного хранилища в вашу файловую систему и затем работает с этими данными.

Или вы можете использовать Клиентскую библиотеку , что, возможно, является лучшим подходом.

Для последнего убедитесь, что в прошлом вы запускали pip install google-cloud-storage на компьютере, на котором вы работали.запускаешь твой код.

Предполагая, что используемая вами функция load принимает в качестве входного файла текущий рабочий каталог.

Добавьте следующий фрагмент кода в исходный код:

from google.cloud import storage

client = storage.Client()

def download_gcs_object(name_bucket, name_blob):
    bucket = client.bucket(name_bucket)
    blob = bucket.blob(name_blob)
    blob.download_to_filename(blob.name)
    print("Downloaded into current working directory a file with name ", blob.name)

После этого вы можете редактировать часть, которую вы разместили таким образом:

def load_dataset():

    #download a Cloud Storage object
    BUCKET="bucket" #TODO edit
    BLOB="data.npz" #TODO edit
    #or #BUCKET, BLOB = 'gs://bucket/data.npz'.split('/')[-2:] #if you prefer, have to edit accordingly again
    download_gcs_object(BUCKET, BLOB)

    # load dataset from filename with the blob name 

    data = load(BLOB)
    #The rest of the code is as it was...
    X, y = data['arr_0'], data['arr_1']

    # separate into train and test datasets
    trainX, testX, trainY, testY = train_test_split(X, y, test_size=0.3, random_state=1)
    print(trainX.shape, trainY.shape, testX.shape, testY.shape)
    return trainX, trainY, testX, testY

Дайте нам знать, если это работает, если это не объясняет, что такое функция load.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...