반응형

Google Colab에서 생성된 모델 (예: best-cnn-model.keras) 파일을 Google Drive로 옮기는 간단한 방법을 알려드릴게요. 이 과정은 머신러닝 모델 파일을 안전하게 저장하거나, 나중에 다시 활용할 때 매우 유용하답니다.

자, 이제 단계별로 알아볼까요? 🌟


1️⃣ Google Drive 마운트하기

Google Drive를 Colab에 연결(마운트)하면, 파일을 Drive에 직접 저장하거나 불러올 수 있어요.

코드

아래 코드를 실행하면, Colab 환경에 Google Drive를 마운트할 수 있습니다.

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

과정

  1. 위 코드를 실행하면 Google 계정 로그인 요청 팝업이 뜹니다.
  2. 로그인을 완료하고 "허용" 버튼을 클릭하세요.
  3. 마운트가 완료되면 Google Drive의 기본 경로가 /content/drive/My Drive에 생성됩니다. 드라이브에 내 드라이브에 해당합니다.

2️⃣ 모델 파일 복사하기

Google Drive가 마운트되었으면, 이제 생성된 best-cnn-model.keras 파일을 Google Drive로 복사해봅시다.
아래 코드를 사용하면 파일 복사가 간단해요. 🛠️

코드

import shutil

# Colab 환경의 파일 경로
source = 'best-cnn-model.keras'

# Google Drive 내 저장할 경로
destination = '/content/drive/My Drive/best-cnn-model.keras'

# 파일 복사
shutil.copy(source, destination)

print("파일이 Google Drive로 복사되었습니다.")​

결과

코드 실행 후 "파일이 Google Drive로 복사되었습니다."라는 메시지가 표시되면 성공이에요! 😊
Google Drive에 접속해 My Drive(내 드라이브) 폴더에서 best-cnn-model.keras 파일이 복사된 것을 확인하세요.


3️⃣ 특정 폴더에 저장하기

Google Drive 내 특정 폴더에 파일을 저장하려면 destination 경로를 수정하면 돼요.

예시

  • My Drive의 models 폴더에 저장하려면:
    python
    코드 복사
    destination = '/content/drive/My Drive/models/best-cnn-model.keras'
  • 폴더가 없을 경우, Drive에 해당 폴더를 미리 생성해두세요.

4️⃣ 추가 주의사항

  1. Google Drive 용량 확인
    Drive에 저장할 파일 크기가 크다면, Drive 용량이 충분한지 확인하세요.
    용량이 부족하면 업로드가 실패할 수 있어요.
    👉 Google Drive 용량 확인하기
  2. 파일명 확인
    파일명이 같으면 덮어쓰기가 발생하니 주의하세요. 필요하면 파일명을 변경해서 저장하세요.
  3. Google Drive에서 파일 확인
    Google Drive에 접속해 파일이 제대로 저장되었는지 확인하세요. Drive 경로는 Colab에서 설정한 destination과 동일한 곳입니다.

결론

Google Colab과 Google Drive를 연결하면, 파일 저장과 관리가 훨씬 쉬워져요.
특히, 머신러닝 모델이나 데이터를 안전하게 보관하고 싶을 때 유용합니다. 😊
이제 간단한 코드를 사용해 손쉽게 파일을 Drive로 옮겨보세요!


해시태그
#GoogleColab #GoogleDrive #머신러닝 #파일관리 #딥러닝 #keras #모델저장 #Python #코딩팁

728x90
반응형
반응형

책(혼공머신러닝) 을 보고 공부 중 이전에 학습했던 내용이 다시 나오는데 기억이 나지 않아 정리합니다.

train_scaled 데이터를 2D 배열 형태로 변환합니다. 이는 머신러닝 모델에서 데이터를 입력으로 사용할 수 있도록 준비하는 중요한 과정입니다.

train_scaled = train_scaled.reshape(-1, 28*28)
  • reshape: NumPy 배열의 형태(차원)를 변경하는 메서드입니다. 데이터를 새롭게 구조화할 때 사용됩니다.
  • -1: 이 위치에 들어갈 크기를 자동으로 계산하라는 의미입니다.
    • NumPy는 전체 요소 수를 유지하면서, 다른 차원의 크기를 기준으로 이 값(-1)을 계산합니다.
  • 28*28: Fashion MNIST 데이터의 각 이미지는 28x28 픽셀 크기의 2D 배열입니다. 이 값을 지정하여 2D 이미지를 1D 벡터로 변환합니다.
    • 여기서는 28과 28을 곱하여 784(픽셀의 총 개수) 크기의 1D 벡터로 변환합니다.

reshape가 필요한 이유

SGDClassifier와 같은 전통적인 머신러닝 알고리즘은 1D 벡터 형태의 입력 데이터를 요구합니다.

  • 원본 Fashion MNIST 데이터는 (이미지 개수, 28, 28) 형태의 3D 배열입니다.
    • 예시: (60000, 28, 28) (60000개의 28x28 이미지를 포함)
  • 이를 2D 형태의 입력 데이터로 변환해야 합니다.
    • 변환 후: (60000, 784) (각 이미지가 길이 784의 벡터로 변환됨)

SGDClassifier는 각 벡터를 개별 데이터 포인트로 간주하며, 모든 픽셀 값을 입력 특성(feature)으로 사용하여 모델을 학습합니다.


코드 실행 결과 예시

변환 전:

  • 데이터의 형태: (60000, 28, 28)
    • 60000개의 28x28 픽셀 이미지를 포함한 3D 배열.

변환 후:

  • 데이터의 형태: (60000, 784)
    • 60000개의 길이 784(=28*28)인 벡터로 이루어진 2D 배열.

왜 -1을 사용하는가?

reshape 메서드에서 **-1**은 크기를 자동으로 계산하기 위한 편리한 방식입니다.

  • 예를 들어, 데이터의 총 크기가 60000 x 28 x 28이라면, **28*28**을 고정했을 때, **60000**은 자동으로 계산됩니다.
  • 따라서, **-1**을 사용하면 데이터 크기가 변경되더라도 코드를 수정할 필요가 없습니다.

최종적으로 데이터 준비 과정 요약

  • 정규화:
train_scaled = train_input / 255.0

 

  • 이미지를  255로 나누어 0~1 사이로 정규화하여 숫자 값을 축소합니다.
  • 이 작업은 학습 안정성과 모델 성능을 개선하는 데 도움이 됩니다.
  • 차원 변경:
train_scaled = train_scaled.reshape(-1, 28*28)

 

  • 28x28 크기의 2D 이미지를 784 픽셀 길이의 1D 벡터로 변환합니다.
  • 각 벡터가 SGDClassifier에 입력됩니다.

전체적인 맥락

SGDClassifier는 벡터 형태의 입력 데이터만 처리할 수 있기 때문에, 2D 이미지를 1D 벡터로 변환하는 reshape 작업이 필수입니다. 이 과정은 다른 전통적 머신러닝 알고리즘(예: SVM, Logistic Regression 등)에서도 동일하게 적용됩니다.

728x90
반응형
반응형

혼공 머신러닝 예제 진행 중 발생한 문제로

혼공 머신러닝의 경우 코렙사용을 기준으로 예제가 작성되다 보니 종종 직접 설치해야 하는 라이브러리들이 생깁니다.

!wget https://bit.ly/fruits_300_data -O fruits_300.npy

위의 코드도 그런 문제인데 실행해보면 ModuleNotFoundError: No module named ‘wget’ 이란 오류 메세지가 나오게 됩니다.

모듈을 못찾으니 conda list 또는 pip list로 설치된 모듈들을 확인 실제 존재 하지 않는다면( 당연히 없을 확률이 훨씬 높습니다)

conda install wget
or
pip intsll wget

설치를 하고 모듈을 설치 했으니 당연히 import wget 해서 모듈 import를 진행했는데 ModuleNotFoundError: No module named ‘wget’ 오류가 다시 나오게 됩니다.

wget은 리눅스 커널 명령어여서 그런지 import필요없이 처음 실행하고자 하는 코드를 그대로 실행하면 문제없이 파일 다운로드가 진행 됩니다.

구글링을 통해 다른 분들의 사례를 보면 설치 import를 해야 한다고 하는데 저는 오히려 import없이 진행해야 오류가 없던데 이유를 찾지는 못했네요.

참고로 wget 앞에 느낌표(!)는 리눅스 셸 명령임을 코드셸에 알려주기 위해 사용합니다.

728x90
반응형

+ Recent posts