본문 바로가기

인공지능50

[Deep Learning] 파이썬으로 압축 파일 풀기 zipfile 📝파이썬으로 압축 파일 푸는 방법 # 라이브러리 임포트 import zipfile # 변수에 ZipFile이 있는 경로를 가져와서 저장한다 file = zipfile.ZipFile('/tmp/horse-or-human.zip') # file.extractall에 압축을 풀 폴더 경로를 입력한다(새로운 파일이름을 적으면 파일 생성됨) file.extractall('/tmp/horse-or-human') 압축을 푼 각 폴더에 저장되어 있는 사진 파일들 확인하기 import os # dir 디렉토리에 있는 것을 리스트로 전부 가져오기(파일명 확인) os.listdir(train_horse_dir) # 디렉토리에 저장된 파일의 갯수 확인 len(os.listdir(train_horse_dir)) 2022. 12. 30.
[Deep Learning] CNN Pooling 📝CNN의 풀링(Pooling) 풀링(Pooling)은 다운 샘플링(Down sampling)이다 (다운샘플링 = 사이즈를 줄인다) 간단하게 말하자면 대표하는 값으로 하나로 만드는 것 풀링은 사이즈를 줄이고 특징을 잘 뽑아낸다 Max Pooling : 정해진 크기 안에서 가장 큰 값만 가져온다 Average Pooling : 정해진 크기 안의 값들의 평균을 가져온다 ※ 가장 많이 사용하는 것은 맥스풀링(MaxPooling)이다 2022. 12. 30.
[Deep Learning] CNN Convloution 📝CNN의 컨볼루션(Convloution) CNN? Convolution Neural Network의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰인다 ※ ANN을 사용하면 위치구조가 사라지기때문에 사진을 있는 그대로 학습시키는 CNN을 사용한다 컨볼루션이란, 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자 커널(kernel)로 컨볼루션(Convloution)한 결과는 피처맵(Feature Map)이다 ※ 커널은 필터 filter 라고도 한다 컨볼루션 결과로 나오는 행렬사이즈 계산하는 공식 (I - K + 2P) / S + 1 I = 이미지사이즈 K = 커널사이즈 P = 패딩 S = 스트라이드 스트라이드(Stride) : .. 2022. 12. 29.
[Deep Learning] TensorFlow 레이블 인코딩된 값을 원핫 인코딩으로 바꾸기 📝딥러닝 텐서플로우 넘파이의 레이블 인코딩된 값을 원핫 인코딩으로 바꾸는 방법 바꾸는 방법은 텐서플로우에서 제공한다 import tensorflow as tf # 학습용과 테스트용 둘다 바꿔준다 (num_classes= 는 아웃풋 레이어 갯수) y_train = tf.keras.utils.to_categorical(y_train, num_classes= 10) y_test = tf.keras.utils.to_categorical(y_test, num_classes= 10) # 이렇게도 가능 from keras.utils import to_categorical y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) 모델링할때 원핫.. 2022. 12. 29.
[Deep Learning] TensorFlow 모델 저장 / 불러오기 📝딥러닝 텐서플로우 모델 저장하고 불러오는 방법 네트워크와 웨이트를 통으로 저장하고 불러오기 # 폴더구조로 저장 model.save('fashion_mnist_model') # 저장된 인공지능 불러오기 model2 = tf.keras.models.load_model('fashion_mnist_model') # 저장된 경로와 파일명을 입력 # 파일 하나로 저장 model.save('fashion_mnist_model.h5') # 저장된 인공지능 불러오기 model3 = tf.keras.models.load_model('fashion_mnist_model.h5') json 파일로 네트워크만 저장하고 불러오기 ( 현재 to_yaml()은 지원되지 않는다 ) ※ 저장한 네트워크로부터 모델을 만들때 주의할점 : .. 2022. 12. 29.
[Deep Learning] Dropout 📝딥러닝 드랍아웃 드랍아웃이란 뉴런에 연결된 선을 일부분을 잘라서 학습이 잘 되도록 하는 방법이다 from keras.layers import Dropout def build_model() : model = Sequential() model.add( Dense( units= 128, activation= 'relu', input_shape=(784, ) ) ) model.add( Dropout(0.2) ) # rate 값 지정 랜덤으로 이 구간의 선을 20% 없애라는 뜻 model.add( Dense( units= 64, activation= 'relu') ) model.add( Dense( units=10, activation= 'softmax' ) ) model.compile( optimizer= '.. 2022. 12. 29.
[Deep Learning] DNN TensorFlow 이미지 분류하는 딥러닝 해보기 📝딥러닝 DNN 텐서플로우 이미지를 분류하는 딥러닝 해보기 TensorFlow keras datasets API에 들어있는 Fashion MNIST데이터를 가져온다 mnist = tf.keras.datasets.fashion_mnist 트레이닝셋과 테스트셋을 가져온다 ※ 텐서플로우에서 사진을 넘파이로 변환해둔 데이터 X_train.shape의 결과 값은 (60000, 28, 28) = 28행 28열 6만장(갯수)이다 (X_train, y_train), (X_test, y_test) = mnist.load_data() 해당 데이터에 들어있는 두번째 사진의 이미지를 확인해보기 위해 pyplot의 imshow() 사용 plt.imshow(X_train[1], cmap='gray') plt.show() 학습이 .. 2022. 12. 29.
[Deep Learning] epochs 횟수 조정 📝딥러닝 epochs 횟수 조정 epoch 횟수를 너무 많이 지정하면 학습한 데이터만 잘 맞추게 되는 오버피팅(Overfiting)이 된다 또 너무 적게 지정하면 학습이 덜 되어 언더피팅(Underfiting)이 된다 # 학습데이터 차트보기 plt.plot(epoch_history.history['loss']) plt.plot(epoch_history.history['val_loss']) plt.legend(['Train Loss', ' Validation Loss']) plt.show() # 밸리데이션데이터 차트보기 plt.plot(epoch_history.history['accuracy']) plt.plot(epoch_history.history['val_accuracy']) plt.legend(['.. 2022. 12. 29.
[Deep Learning] 분류 문제 Loss 셋팅 📝딥러닝 분류 문제 Loss 셋팅 2개로 분류하는 문제에서의 로스펑션은 bibary_crossentropy를 사용하고 3개 이상으로 분류하는 문제에는 두가지 방법이 있는데 y의 값을 확인하여 선택한다 첫번째 방법은 y값이 레이블 인코딩으로 되어있으면 sparse_categorical_crossentropy 두번째 방법은 y값이 원핫인코딩으로 되어있으면 categorical_crossentropy def build_model() : model = Sequential() model.add( Flatten() ) model.add( Dense( units= 128, activation= 'relu') ) model.add( Dense( units= 64, activation= 'relu') ) model.ad.. 2022. 12. 28.
[Deep Learning] activation Softmax 📝딥러닝 여러개의 값 중에서 가장 큰 값을 선택하는 엑티베이션 소프트맥스 Softmax 여러개의 값 중에서 가장 큰 값을 선택 [0.1, 0.1, 0.05, 0.1, 9.5, 0.1, 0.05, 0.05, 0.05] 여기서 가장 큰 값을 1로 만들고 나머지는 0으로 만들어준다. [0, 0, 0, 0, 1, 0, 0, 0, 0] 아웃풋 레이어 activation= 'softmax' def build_model() : model = Sequential() model.add( Flatten() ) model.add( Dense( units= 128, activation= 'relu') ) model.add( Dense( units= 64, activation= 'relu') ) # 아웃풋 레이어에 activa.. 2022. 12. 28.