이성령
이성령

Reputation: 1324

When I use Google Colaboratory, how to save image, weights in my Google Drive?

I use Google Colaboratory then I want to save output images in my Google Drive or SSD, HHD but its directory is "/content"

import os     
print(os.getcwd())
# "/content"

so is it possible to change path (HDD, SSD, googledrive)?

Upvotes: 48

Views: 154693

Answers (5)

Prof.Plague
Prof.Plague

Reputation: 737

One of the other simple methods to save a file to Google Drive I found here is to use the command cp after you mounted the drive.

Here is the code:

from google.colab import drive
drive.mount('/content/gdrive')

Then use this:

!cp -r <CURRENT FILE PATH> <PATH YOU WANT TO SAVE>

Example:

!cp -r './runs/exp0.h5' /content/gdrive/MyDrive/Exp1/

Upvotes: 18

If you use ipynb, make sure:

  1. At the begining of your code, you have:
%matplotlib inline
  1. you save it before plt.show(). For instance, the code to save the sns.heatmap of some dataframe df is as follow:
matrix1 = df.corr().round(2)
plt.figure(figsize=(19,16))
sns.heatmap(matrix1, annot=True)
plt.savefig('name_heatmap.png') 
plt.show()

files.download('name_heatmap.png')  

Upvotes: 0

Tadej Magajna
Tadej Magajna

Reputation: 2963

You need to mount google drive to your Colab session.

from google.colab import drive
drive.mount('/content/gdrive')

Then you can simply write to google drive as you would to a local file system like so:

with open('/content/gdrive/My Drive/file.txt', 'w') as f:
  f.write('content')

Upvotes: 75

Nazmus Sakib
Nazmus Sakib

Reputation: 304

To save the weight you can run the following after training.

saver = tf.train.Saver()
save_path = saver.save(session, "data/dm.ckpt")
print('done saving at',save_path)

Check the location where the ckpt files were saved.

import os
print( os.getcwd() )
print( os.listdir('data') )

Finally download the file!

from google.colab import files
files.download( "data/dm.ckpt.meta" ) 

Upvotes: 25

Artem Sokolov
Artem Sokolov

Reputation: 13701

Take a look at the example on interfacing with external files. The general workflow is to output the file to the cloud environment, then download it.

Let's output the plot from the "Hello, Colaboratory" example to a file. I made a copy of the notebook to my Google Drive and ran the following commands:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(20)
y = [x_i + np.random.randn(1) for x_i in x]
a, b = np.polyfit(x, y, 1)
f = plt.figure()
_ = plt.plot(x, y, 'o', np.arange(20), a*np.arange(20)+b, '-')

f.savefig( "test.png")

If we list the files in the Google Collaboratory environment, we will see test.png among them:

import os
print( os.getcwd() )
print( os.listdir() )
# /content
# ['datalab', '.local', '.config', '.forever', '.cache', '.rnd', 'test.png', '.ipython']

All that's left to do is download it to my local machine using the example I linked at the beginning on this answer:

from google.colab import files
files.download( "test.png" )    

Finally, if you really need the files on Google Drive instead of your local machine, you can use the Google Drive API to move the files accordingly.

P.S. If you don't like writing files to /content, you can always create a subdirectory and os.chdir() into it, but keep in mind that this subdirectory is still local to your cloud environment and requires you to download files as above.

Upvotes: 7

Related Questions