리눅스에서 파일을 복사하는 방법은 copyfile(파일의 경로 + 파일명 , 이동할 경로 + 저장명) 으로 가능하다.
import os
import zipfile
import random
import tensorflow as tf
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from shutil import copyfile
def split_data(SOURCE, TRAINING, TESTING, SPLIT_SIZE):
# 소스는 원본 파일 경로
# 트레이닝은 이동할 트레이닝 경로
# 테스팅은 이동할 테스팅 경로
# 스플릿 사이즈는 트레이닝데이터의 비율
# 원본 경로의 파일명들을 모두 가져온다.
file_names = os.listdir(SOURCE)
# 가져온 파일명을 잘 섞어준다.
shuffled_files = random.sample(file_names,len(file_names))
# 학습용과 테스트용 분리를 위해 index를 구한다.
index = int(len(shuffled_files) * SPLIT_SIZE)
# 섞인 파일명 리스트에서, 해당 인덱스만큼 잘라서 학습용고 테스트용 파일명 분리한다.
training_images = shuffled_files[0:index]
test_images = shuffled_files[index : ]
# 학습용과 테스트용으로 각각 해당 폴더로 , 파일을 카피한다.
for file_name in training_images :
if os.path.getsize(SOURCE+file_name) > 0 :
# /temp/PetImages/sjel.jpg
copyfile(SOURCE + file_name , TRAINING + file_name)
for file_name in test_images :
if os.path.getsize(SOURCE + file_name) > 0 :
copyfile(SOURCE + file_name , TESTING + file_name)
# YOUR CODE ENDS HERE
CAT_SOURCE_DIR = "/tmp/PetImages/Cat/"
TRAINING_CATS_DIR = "/tmp/cats-v-dogs/training/cats/"
TESTING_CATS_DIR = "/tmp/cats-v-dogs/testing/cats/"
DOG_SOURCE_DIR = "/tmp/PetImages/Dog/"
TRAINING_DOGS_DIR = "/tmp/cats-v-dogs/training/dogs/"
TESTING_DOGS_DIR = "/tmp/cats-v-dogs/testing/dogs/"
split_size = .9
split_data(CAT_SOURCE_DIR, TRAINING_CATS_DIR, TESTING_CATS_DIR, split_size)
split_data(DOG_SOURCE_DIR, TRAINING_DOGS_DIR, TESTING_DOGS_DIR, split_size)
'개발 > 머신러닝' 카테고리의 다른 글
파이썬 머신러닝 - Item based collaborative filtering recommend system (pivot, corr 이용) (1) | 2023.01.03 |
---|---|
파이썬 머신러닝 - CNN 러닝 , 이미지압축풀기 , 이미지 증강, 이미지(jpg,png등)를 변환하기 (0) | 2022.12.30 |
파이썬 머신러닝 - 이미지 러닝 CNN , convolution , pooling (0) | 2022.12.30 |
파이썬 머신러닝 - 레이블 y 값을 원핫인코딩으로 바꾸기. (0) | 2022.12.29 |
파이썬 머신러닝 - 텐서플로우를 이용하여 인공지능 저장하기. (0) | 2022.12.29 |