Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

Passion, Grace & Fire.

google colab에서 dataset 파일 불러오기 본문

deeplearning

google colab에서 dataset 파일 불러오기

vincenthanna 2019. 5. 30. 12:11

개인 PC나 노트북에서 kaggle 코드나 딥러닝/머신러닝 실습을 하는 경우 데이터를 불러오거나 훈련하는 데
시간이 너무 오래 걸리는 경우가 많습니다.

google colab에 코드를 올리고 런타임 유형을 GPU로 설정해서 실행하면 개인 PC보다 훨씬 빠르게 신경망을 훈련시킬 수 있지만, colab 디렉토리에 file을 업로드하는 경우 런타임을 초기화하면 사라지므로 그때마다 파일을 다시 업로드해야 하는 번거로움이 있습니다.

이런 경우를 방지하기 위해 데이터 파일을 별도의 공간에 올려놓고, colab에서 파일 링크로 다운로드 받는 방식이 많이 사용되고 있습니다.

파일을 올려둘 만한 곳을 찾기는 어렵지만, 실습을 위해서라면 네이버 대용량 메일 기능으로 자신에게 데이터 파일을 송신하고 파일 링크 주소를 따서 사용하면 유용합니다.(한달 기한이 있지만, kaggle 연습이나 테스트 등의 용도로는 충분한 기간이라 생각 됩니다.)

%matplotlib inline

import pandas as pd
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns

sns.set() # seaborn 속성을 기본값으로 설정

처음에는 파일을 다운로드받아 로컬에 저장하고, 이후에는 있는 파일을 불러오는 식으로 사용하면 처음부터 모두 실행하는 경우에도 빠르게 재시작할 수 있습니다.

from urllib.request import urlopen
import os

def get_file_by_url(url, filename):
    """
    파일이 없거나 중간에 잘린 경우에만 파일을 다운로드 한다.
    """
    resp = urlopen(url)
    downloaded = False
    if os.path.exists(filename):
        localfilesize = os.path.getsize(filename) 
        remotefilesize = int(resp.getheader("Content-Length"))
        if localfilesize == remotefilesize:
            downloaded = True
    if downloaded:
        print("already downloaded! : ", filename)
        return
    if os.path.exists(filename):
        os.remove(filename)

    with open(filename, 'wb') as f:
        fsize = int(resp.getheader("Content-Length"))
        print("downloading {} ({} bytes)".format(filename, fsize))

        downloaded = 0
        block_sz = 512 * 1024
        while True:
            buffer = resp.read(block_sz)
            if not buffer:
                break
            downloaded += len(buffer)
            f.write(buffer)
train_url = "http://bigfile.mail.naver.com/bigfileupload/download?fid=wQbwaAvw1HMjKweR16RjKxbZKogdFCYZKAulKAEwaxUwKxb9KCYwFxMmaAMlaxvlHrEmFrEdFAioK6F4Mqg/F63CFob9pxtwKrKlK4kva6F0"
test_url = "http://bigfile.mail.naver.com/bigfileupload/download?fid=weYwaAvw1HMjK3eR16RjKxbZKogdFCYZKAulKAEwaxUwKxb9KCYwFxMmaAMlaxvlHqJCaxUmFxJvMoC0pAElFrK/F6tqMquZK4tmM4JSKA+4"

get_file_by_url(train_url, "train.csv")
get_file_by_url(test_url, "test.csv")
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
Comments