일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- del
- 최솟값
- sklearn
- nan
- elbow method
- IN
- string
- DataFrame
- 최댓값
- numpy
- len()
- pandas
- count()
- insert()
- dendrogram
- matplotlib
- append()
- 반복문
- 덴드로그램
- data
- 분류 결과표
- Python
- wcss
- Dictionary
- Machine Learning
- list
- DataAccess
- analizer
- hierarchical_clustering
- function
- Today
- Total
목록Python/Deep Learning (22)
개발공부

예제 # 파이썬으로 디렉토리 만드는 코드 작성 if not os.path.exists('디렉토리 경로') : os.makedirs('디렉토리 경로') # 에포크가 끝날 때 나오는 정보를 파일로 저장할 때 사용 from tensorflow.keras.callbacks import CSVLogger csv_logger = CSVLogger('저장할 경로/파일명.csv', append = True) model.fit(X_train, y_train, epochs = 50, validation_data = (X_val,y_val), callbacks = [csv_logger])

예제 # 파이썬으로 디렉토리 만드는 코드 작성 if not os.path.exists('디렉토리 경로') : os.makedirs('디렉토리 경로') from tensorflow.keras.callbacks import ModelCheckpoint # monitor = 어떤 것을 지표로 삼을지 # save_best_only :가장 좋은 모델 저장 cp = ModelCheckpoint('저장할경로/파일명.h5', monitor = 'val_accuracy', save_best_only = True, verbose = 1) model.fit(X_train, y_train, epochs = 50, validation_data = (X_val,y_val), callbacks = [cp])

Fine Tuning Fine Tuning이란 Transfer Learning을 이용해 학습한 상태에서 (즉, fit을 한 상태에서) 베이스 모델의 Frozen Layer 범위에 변화를 주거나 컴파일에 변화를 주어 추가로 학습을 시키는 것이다. 예제 모델은 이미 생성 되어 있고, 학습을 한 상태이다. # 1. 먼저 베이스 모델의 전체 레이러를 학습 가능토록 바꿔준다. base_model.trainable = True # 2. 베이스모델의 전체 레이어 수를 확인한다 len(base_model.layers) # 3. 몇번째 레이어까지, 학습이 안되도록 할지 결정해준다. end_layer = 100 # 4. 베이스 모델의 첫번째 레이어부터 우리가 정한 레이어까지는 학습이 안되도록 설정해준다. for layer..

강아지와 고양이를 분류하는 실습을 Transfer Learning을 이용하여 해봅시다. 실습은 Colab으로 진행했습니다. 일단 파일을 다운로드 받습니다. !wget --no-check-certificate \ https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip \ -O ./cats_and_dogs_filtered.zip import os import zipfile import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from tensorflow.keras.preprocessing.image import ImageDataGenerator 다운로드 ..

Transfer Learning 전형적인 CNN 모델은 크게 Base Model과 Head Model로 나눌 수 있다. Transfer Learning은 잘 만들어진 CNN model을 가져와서 사용하는 것이다. 보통 특징을 추출하는 잘만들어진 CNN 모델의 Base Model 부분은 이미 잘 학습된 상태이기 때문에 더는 학습하지 않도록 하는데 이를 Frozen이라고 하고, 이때 Base Model을 Frozen Layer라고 한다. 반대로 보통 가져온 CNN모델의 Head Model 부분은 사용하지 않고 사용자가 생성한 ANN 모델을 Head Model로 사용하는데 이 Head Model은 학습이 필요하기 때문에 Trainable Layers로 설정한다.

예시 코드 아래와 같이 /tmp/PetImage 경로에 Cat과 Dog 폴더로 나누어져 있고 그 안에 각각 고양이, 강아지 이미지가 있는 경우를 생각해봅시다. 이 때 Cat 폴더의 이미지와 Dog 폴더의 이미지를 각각 랜덤한 순서로 섞은후 각각의 Cat, Dog 이미지의 90 %는 training 폴더에 새로운 폴더 cats와 dogs를 만들어 저장하고 10 % 는 test 폴더에 새로운 폴더 cats, dogs를 만들어 저장해야합니다. 해당 방법은 아래와 같습니다. 각각 12501개의 이미지 데이터가 있습니다. print(len(os.listdir('/tmp/PetImages/Cat/'))) print(len(os.listdir('/tmp/PetImages/Dog/'))) 1. 먼저 각각의 폴더들을 생..

데이터를 증강한다는 것은 모델을 학습시킬 때 사용할 데이터를 기울이거나, 확대하거나, 반전하거나, 이동시키거나, 회전시키는 등의 기법들을 사용해 여러 조건에서의 데이터들을 만들어 데이터를 풍부하게 하는 것이다. 예시 코드 from tensorflow.keras.preprocessing.image import ImageDataGenerator rotation_range : 데이터 회전 범위 (0–180)도 width_shift_range : 좌우 이동 범위 height_shift_range : 상하 이동 범위 shear_range : 기울기 범위 zoom_range : 확대 범위 horizontal_flip : 상하 대칭 fill_mode : 회전 또는 너비/높이 이동 후에 나타날 수 있는 새로 생성된 픽..

아래와 같이 tmp 폴더의 horse-or-human, validation-horse-or-human 폴더에는 horses와 humans, 두 개씩의 폴더가 있고 그안에는 각각 말과 사람의 이미지가 들어있다. 이런식으로 분류되어 있는 폴더의 이미지들을 학습데이터화 해주는 텐서플로우의 라이브러리가 존재한다. 그 코드는 아래와 같다. from tensorflow.keras.preprocessing.image import ImageDataGenerator # 이미지를 0 - 1 사이의 값으로 피처스케일링 한다. train_datagen = ImageDataGenerator(rescale= 1/255.0) validation_datagen = ImageDataGenerator(rescale= 1/255.0) #..

CNN(Convolution Neural Networks) 이미지를 flatten해서 모델링을 하고 학습을 하면, 그 이미지가 가지고있는 지역적 특성(사람을 예로 들면 눈과 코의 위치 관계 등..)이 사라지게 된다. CNN은 이미지의 지역적 특성을 가진채 학습할 수 있게 처리하는 방식이다. CNN 모델링 과정 1. Convolution, 컨볼루션 1) kernel과 input image의 같은 자리끼리 곱하고 그 결과들의 합을 한다. 2) kernel을 이동시키며 같은 연산을 한다. 이 때 이동시키는 단위를 stride라고 한다. EX) stride = 1 EX) stride = 2 2. Zero - padding, 제로 패딩 만약 5 X 5 의 이미즈를, 3 X 3인 커널로 컨볼루션 하면, 결과는 3 ..

y는 0 - 9의 값으로 레이블 인코딩되어 있다. >>> y_train array([5, 0, 4, ..., 5, 6, 8], dtype=uint8) 이를 원핫 인코딩된 값으로 바꾸는 방법은 아래와 같다. to_categorical(인코딩할 값, num_classes = 분류 개수) from tensorflow.keras.utils import to_categorical y_train = to_categorical(y_train, num_classes = 10)