반응형

CNN  DNN 코드

DNN앞에 CONVELUTION LAYER과 ㅡMAXIM

 

CNN(Convolutional NN) 구조

        Convolution filter pooling을 반복.

        이후 일반 DNN에 적용.

 

Convolution Filter

Convolution Filter - Stride :

필터 적용 시의 이동 칸 수.

보통은 1.

몇칸 이동한다는 것을 stride라고 한다.

 

 

Convolution Filter - Padding

필터 특성상 이미지가 작아지는 것을 방지하기 위해 원 이미지를 키우는 것.

 

 

 

Max Pooling

특징 추출과 분류

        convolution 필터와 pooling이 반복하여 feature 추출.

        이후 일반 DNN로 분류.

 

dnn에 여줄 때는 flattern 해준다.

기존 dnnconvolution 하고 max pooling 있는 것인 cnn이다.

 

vgg16구조

성능이 좋은 구조인지는 설명 못하지만 여러개 컴퓨터로 해서 한다.

우승 했던 모델을 가져와서 변형해서 한다.

 

함수가 성능을 잘 나와서 하지만 설명은 못한다.

 

# ADDED START

from tensorflow.keras.preprocessing.image import ImageDataGenerator

 

datagen = ImageDataGenerator(

    rotation_range=10# 0 ~ 180 회전하는 범위가 0 ~ 180 최대 180 까지 보낼  있다.

    width_shift_range=0.1좌우 

    height_shift_range=0.1위아래 

    fill_mode='nearest'이동 시키고 나면 없는 부분이 생겨서  가까운 값을 채워준다.

    horizontal_flip=True#좌우 반전

    vertical_flip=False  세로

)

# ADDED END

요즘에는 데이트를 실시간으로 만들어서 한다

model.fit_generator(datagen.flow(X_train, y_train, batch_size=128), epochs=5)

 

 

Conv2D ->가로 세로 있는것

cnn에서 conv2d -> Conv1D 1차원으로 바뀌였다.

cnn 사용가능하다.

옆으로 있는

 

분류(Classification)

 

 

google colab github 파일 가져오기

 

 

 

 

데이터 로딩하고 전처리 , 결측치(판다스) , outlier 데이터 이상하게 되여있는것  numpy에 담은 다음 입력 ,출력

학습을 돌리면

보통 오류가 나는 부분은 shape로 안했고 , string을 숫자로 못 바뛌거나 outlier는 학습이 안된것

 

 

 

rnn는 입력과 출력이 동일한다.

        상태를 가지고 있고, 다음 연산때 그 상태가 입력으로 사용된다.

출력된 값을 일력에 하나 저장하고 한다.

 

#Bidirectional

Bidirectional 양방향으로 하는 것 이다.

일반적인 것을 사용하는 것이 아니라 안에는 LSTM을 사용한다 .

 

 

LSTM(Long Short Term Memory)

        RNN의 단점을 보완한 모델

 

 

결과적으로 보면 입력과 출력이 있고

입력과 출력을 주면 크게 버서 나지않는다.

학습하는 시간이 거의 차이 나지 않다

rnn은 하나의 데이터가 있으면 하나의 워드이다.

sequencial과 같이 여준다.

cnn에 비해서 rnn는 최소 10배 이상 학습이 된다.

 

text는 만들 떄 embedding 이라는 방법을 하나 더 사용한다.

 

Word2Vec

 

 

이미지 분할

segmentation 픽셀 단위의 폐야 아니야 아니면 배경이야 이런것

segmentation 은 보통 여러개 한다. 색갈 별로 한다.

이미지 분할이란

본 글을 이해하기 위해서는 이미지 분할(image semantic segmentation) 개념을 우선 알아둘 필요가 있습니다. 이미지 분할은 이미지를 구성하는 개별 픽셀 분류를 목표로 합니다. 현재 보고 있는 픽셀에 해당하는 클래스(라벨) 값을 표기하는 방식으로 예측 결과물을 생성하죠. [그림 2]의 첫 번째 이미지의 풀(grass)과 소(cow)를 구분한다고 해봅시다. 소에 해당하는 픽셀 영역에는 ‘1’, 그 외 잔디 영역에는 ‘0’을 표기합니다. 그 후 기계는 1이 표시된 곳에 파란색 마스크(mask) 씌우고, 0이 표시된 곳에 초록색 마스크를 씌워 이미지에서 소와 잔디를 명확하게 구분합니다.

segmentation은 픽셀 다위의 분류 이다.

 

 

 

 

 

 

반응형

'Study > Deep learning' 카테고리의 다른 글

딥러닝-2  (0) 2020.11.26
딥러닝-1  (0) 2020.11.23
반응형

학습 추가 진행

train_data, test_Data로 나누어서 하기

 

model.fit() batch_size

batch_size GPU와 관련된 옵션이다.

한번에 GPU에 보내는 데이터의 수이다.

 

batch_size 1일 경우 1개를 보내고, 1개의 결과를 받고, 1번 웨이트를 업데이트 한다.

batch_size 10일 경우 10개를 보내고, 10개의 결과를 한 번에 받고, 1번 웨이트를 업데이트 한다.

batch_size를 키우면, 시간은 줄어들지만 학습이 빠르게 진행되지 않는다.

 

 

batch_size를 키우면, 시간은 줄어들지만 학습이 빠르게 진행되지 않는다.

 

loss 떨어지는 추세라면 조금  학습해도

학습의 진행 판단 여부는 loss 추세를 보고 결정

test loss 그래프 기울기가 양으로 바뀔  overfitting 이므로  학습을 진행하면  

hooking : test loss 어느 정도 발생하는지 스스로 추세 파악, overfitting 발생할  스스로 멈춤

 

model fit

history = model.fit(X_train, y_train, epochs=1000, verbose=1, batch_size=20, validation_data=(X_test, y_test))

모델  안에 들어가는 옵션핏하면서 validation test_x, test_y 데이터로

# (좌측은 train data, 우측은 test data)

따로 validation 데이터를 주지 않고, test 데이터로 준 것의 일부를 validation에 사용.

validation에 사용된 데이터는 학습에 사용되지 않는다.

history = model.fit(X_train, y_train, epochs=1000, verbose=0, batch_size=20, validation_split=0.1)

 

 

epoch가 적어도 데이터 수가 많으면 학습 잘된다.

epoch 수보다 데이터 수 많은 것이 더 중요

데이터 수가 적으면 overfitting 발생 가능성 (overfitting이 빨리 오면 성능이 안 좋음 - 학습은 되나 원하는 성능을 못 얻을 것)

->> 데이터 확보의 중요성

 

학습 시에 데이터를 섞어 주지 않으면 특정 데이터 순서로 학습이 일어나 편향이 생길 수있다.

shuffle=True

 

Normalization/Standardization

입력이 여러 차원일 때 각 차원의 입력을 동일한 스케일로 맞추어주면, 학습이 빠르게 진행된다고 한다.

·       Normalization : 전체 데이터를 0~1로 변환해준다.

·       Standardization : 평균을 0, 표준편차를 1이되도록 변환해 준다.

·       반드시 해야 할 것 : noramlization, 결측치 처리, outlier 처리

·       수렴 속도 차이 발생

Normalization - 데이터  정규화 한다.

 

 

Overfitting 처리

(오버피팅 완화)

  • DropOut
  • BatchNormalization
  • Regularization

model.add(BatchNormalization()) 

 

 

Regression, 회귀

·       임의의 값 출력하도록.

 

classification, 분류

 

normolization을 하는게 좋다. 하지만 정확하게 하는 것이 좋다.

학습이 되며 0~1 normalization했을 보다 살짝 빠르다

 

딥러닝 장단점

        장점 : 대상 함수의 내부를 몰라도 된다.

        단점 : 비싸다

많은 데이터, 많은 연산량

 

ML DL의 선택

        기존의 방법으로 이미 풀린 문제는 ML

        기존의 방법으로 못풀었는데 데이터가 있으면 DL

바둑, 얼굴인식, 물체인식, 음성인식, 번역

 

딥러닝의 큰 단점

        입출력 데이터 쌍을 구하기 어렵다.

        특히 출력 데이터. 레이블링 데이터(labeling data)

 

Cost Function 종류

        MSE(Mean Squared Error)

        CE(Cross Entropy)

        KL-Divergence

        MLE(Maximum Likelihood Estimation)

 

Optimizer 종류

        오차에 대하여 w를 업데이트 시키는 알고리즘들.

        GD(Gradient Descent)

        Batch GD

        Mini-Batch GD

        SGD(Stochastic GD)

        Momentum

        AdaGrad

        AdaDelta

        Adam

        RMSprop

 

Overfitting 방지법 종류

        DropOut

        BN(Batch Normalization)

        Regularization

        Data Augmentation

 

 

학습율

가중치가 변경되는 정도

 

 

SoftMax

        activation function중의 하나.

        최종 출력층에 사용되며, 여러개의 출력 노드의 합 중에 비중의 값으로 나타낸다.

 

Gradient Descent

        함수가 학습될 바를 정의한 비용함수의 값이 최소로 하기 위해 가중치를 업데이트 하기 위한 알고리즘

 

BackPropagation 역전파

        출력된 값과 원하는 값과의 차이를 가지고 그 전의 w 값들을 변경하는 알고리즘.

        뒤에서부터 그 오차의 값이 전파된다는 이름.

        실제 변경되는 값의 크기는 GD로 결정됨.

반응형

'Study > Deep learning' 카테고리의 다른 글

딥러닝-3  (0) 2020.11.26
딥러닝-1  (0) 2020.11.23
반응형

tensorflow 설치 및 버전 확인

pip install -q tensorflow==2.0.0-beta1

import tensorflow as tf

print(tf.__version__)

 

 

keras fashion_mnist data load

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() 

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat','Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

 

normalization data

train_images = train_images / 255.0

test_images = test_images / 255.0

 

 

Deep Learning

DNN

CNN

RNN

GAN

 

분류: 사람이 분류해야 한다.

기준을 찾는 것이 목적이다.

 

조정 값 = 오차 * 입력값 * 학습율

 

비용 함수는 모델을 구성하는 가중치(w)의 함수이다.

정답을 찾아가는 방향으로 한다.

 

경사 하강법(Gradient Descent)

수학에서 경사를 구하는 것 이 미분이다 . 경사 하강법을 구하는 것이다.

 

 

학습이 안되는 원인 2개는

1) 코드 가 잘못되거나 잘못 작성하거나

2) 데이터가 잘 못 됬다.

 

 

모든 데이터는 모두 오차가 있다.

실제값하고 차이가 날 수 밖에 없다.

코드를 통해서 데이터 전처리 했는데 오류때문에 숫자가 틀려지고

튜닝을 해야 한다. 어떤것 하면 좋은 값이 나오는지

 

신경명

퍼셉트론(Perceptron)

 

MLP(Multi Layer Perceptron)

입력과 출력 사이에 층이 더 있다.  ->hidden layer

 

인공지능(AI; Artificial Intelligence)

머신러닝(ML; Machine Learning)

딥러닝(DL; Deep Learning) 

 

 

딥런닝하려고 하는 것은 기존의 방법으로 안풀리기 때무에

딥런닝하고 머신러닝은 서로 보완하는 방법

 

딥런닝 : 자연어 처리 바둑 , 비전

 

역전파, 경사하강법

역전파(bp, back propagation) 알고리즘

경사하강법(gd, Gradient descent) 알고리즘

 

 

가중치를 업데이트 하기 위해 사용되는 알고리즘

 

 

tensorflow, keras,pytorch

pytorch최근에는 많이 사용한다.

 

딥러닝의 큰 단점

        입출력 데이터 쌍을 구하기 어렵다.

        특히 출력 데이터. 레이블링 데이터(labeling data)

 

비지도 학습, 강화 학습

        레이블링 데이터 문제를 해결하기 위한.

        비지도 학습 : 모델 구조를 통해 레이블링 데이터 없이. GAN

        강화 학습 : 환경과 동적으로 연동하여 레이블링 데이터를 취득.

 

Cost Function 종류

        MSE(Mean Squared Error)

        CE(Cross Entropy)

        KL-Divergence

        MLE(Maximum Likelihood Estimation)

 

Optimizer 종류

cost function 이 있으면 이동하는 것

        오차에 대하여 w를 업데이트 시키는 알고리즘들.

        GD(Gradient Descent)

        Batch GD

        Mini-Batch GD

        SGD(Stochastic GD)

        Momentum

        AdaGrad

        AdaDelta

        Adam

        RMSprop

 

 

Overfitting 방지법 종류

        DropOut

        BN(Batch Normalization)

        Regularization L1, L2

        Data Augmentation -> 데이터의 양을 많이 늘린다.

 

영상은 증강 시키는데 자연어 등 처리는 증가 시키는 것이 어렵다.

 

 

학습율

        가중치가 변경되는 정도

 

활성화 함수 종류

SoftMax 최대 1 최소 0으로 하고 싶다. 합쳐서 1이다.

 

 

relu  기본인데

다른 것 사용하면 학습이 늦어진다. 뭐 사용해도 관계없지만 실습시간의 문제가 있다.

컴파일 : 모델  optimizer + loss

 

 

model.fit(X_train, y_train, epochs=1000, verbose=0, batch_size=20)

verbose = 0 직접 결과만 나온다.

verbose = 1 인 경우는 학습 과정이 나온다.

 

노드 개수와 레이어 개수는 optimizer , activation -> hypper parameter

architecture이 결정한다.

결론은 가이드가 없다.

 

 

그전에 grid search도 있었다.

그리드로 하는 것이다. 이것으로 해도 잘 안된다.

그래서 가이드가 없다.

 

 

값이 다른 것은 시작의 weigh가 다르다.

시작을 하면 메모리에서 값을 정한다.  데이터 초기화 하지 않아서

초기화 값이 다 달라서

 

seed는 데이터 섞을 때 seed

노드를 쭐이는 방향으로 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'Study > Deep learning' 카테고리의 다른 글

딥러닝-3  (0) 2020.11.26
딥러닝-2  (0) 2020.11.26

+ Recent posts