Как сохранить результаты np.array для будущего использования при использовании Google Colab - PullRequest
0 голосов
/ 08 мая 2020

Я работаю над проектом по поиску информации. Для этого я использую Google Colab. Я нахожусь на этапе, когда я вычислил некоторые функции (« input_features »), и у меня есть метки (« labels »), выполнив для l oop, что заняло у меня около 4 часов до финиша sh.

Итак, в конце я добавил результаты в массив:

input_features = np.array(input_features)
labels = np.array(labels)

Итак, мой вопрос будет : Можно ли сохранить эти результаты, чтобы использовать их в будущем при использовании Google Colab?

Я нашел 2 варианта, которые, возможно, можно применить, но я не знаю, где эти файлы созданы.

1) Чтобы сохранить их как файлы csv. И мой код будет:

from numpy import savetxt
# save to csv file
savetxt('input_features.csv', input_features, delimiter=',')
savetxt('labels.csv', labels, delimiter=',')

И для их загрузки:

from numpy import loadtxt
# load array
input_features = loadtxt('input_features.csv', delimiter=',')
labels = loadtxt('labels.csv', delimiter=',')
# print the array
print(input_features)
print(labels)

Но я все равно ничего не получаю, когда печатаю.


2) Сохраните результаты массива с помощью pickle, где я следовал этим инструкциям отсюда: https://colab.research.google.com/drive/1EAFQxQ68FfsThpVcNU7m8vqt4UZL0Le1#scrollTo = gZ7OTLo3pw8M

from google.colab import files
import pickle
def features_pickeled(input_features, results):
  input_features = input_features + '.txt'
  pickle.dump(results, open(input_features, 'wb'))
  files.download(input_features)
def labels_pickeled(labels, results):
  labels = labels + '.txt'
  pickle.dump(results, open(labels, 'wb'))
  files.download(labels)

И чтобы загрузить их обратно:

def load_from_local():
  loaded_features = {}
  uploaded = files.upload()
  for input_features in uploaded.keys():
      unpickeled_features = uploaded[input_features]
      loaded[input_features] = pickle.load(BytesIO(data)) 
  return loaded_features 
def load_from_local():
  loaded_labels = {}
  uploaded = files.upload()
  for labels in uploaded.keys():
      unpickeled_labels = uploaded[labels]
      loaded[labels] = pickle.load(BytesIO(data))
  return loaded_labes

#How do I print the pickled files to see if I have them ready for use???

При использовании python я бы сделал что-то вроде этого для рассола:

#Create pickle file
with open("name.pickle", "wb") as pickle_file:
     pickle.dump(name, pickle_file)
#Load the pickle file
with open("name.pickle", "rb") as name_pickled:
     name_b = pickle.load(name_pickled)

Но дело в том, что я не вижу никаких файлов создан на моем Google Диске.

Мой код правильный или я пропустил какую-то часть кода?

Длинное описание, чтобы, надеюсь, подробно объяснить, что я хочу сделать и что я сделал для решения этой проблемы.

Заранее благодарю за вашу помощь.

1 Ответ

0 голосов
/ 08 мая 2020

Экземпляры записных книжек Google Colaboratory никогда не гарантированно будут иметь доступ к одним и тем же ресурсам при отключении и повторном подключении, поскольку они запускаются на виртуальных машинах. Следовательно, вы не можете «сохранить» свои данные в Colab. Вот несколько решений:

  1. Colab сохраняет ваш код. Если операция for l oop, на которую вы ссылаетесь, не занимает много времени, просто оставьте код и запускайте его каждый раз при подключении ноутбука.
  2. Проверить np.save . Эта функция позволяет сохранить массив в двоичный файл. Затем вы можете повторно загрузить свой двоичный файл при повторном подключении ноутбука. Еще лучше, вы можете сохранить двоичный файл на Google Диске, подключить диск к ноутбуку и ссылаться на него вот так.
...