KT 에이블스쿨 AIVLE school 4기 AI트랙 5주차 후기 - 1

2023. 9. 10. 21:45·KT에이블스쿨

5주차 일정

9/4 - 9/8 딥러닝

9/4 - 9/8 딥러닝

지금까지 딥러닝을 배우던 나의 모습을 한 문장으로 정의하면 "귓등으로 듣다."입니다.

왜 그랬냐고요? 어려우니까요 ㅠㅠ

하지만 더 이상 물러날 수는 없는 처지입니다. 이걸 못하면 나는 미니 프로젝트도 못하고 그냥 스스로 발전의 기회를 발로 뻥 차버리는 셈입니다.

진짜다

지금까지 들었던 딥러닝 수업들 중에서 제일 많이 이해했다고 생각하는데 여전히 난 부족하고 머리는 텅~ 비어있으므로 다시 정리하며 개념들을 입주시켜 보겠습니다.

 

딥러닝 모델

딥러닝 모델 준비

X = tf.keras.Input(shape=[13]) # 독립변수 13개
Y = tf.keras.layers.Dense(1)(X) # 종속변수 1개
model = tf.keras.Model(X, Y)
model.compile(loss='mse')

 

모델 학습

model.fit(독립, 종속, epochs=500, verbose=0) # verbose: 화면 출력 x
model.fit(독립, 종속, epochs=500, batch_size=150) # batch_size: 한 번에 학습할 데이터 개수(기본값 32)

 

모델 이용(예측)

model.predict(독립[:5])

 

가중치, 편향 확인

w, b = model.get_weights()
print(w, b)

 

 

Hidden Layer 추가

X = tf.keras.Input(shape=[13]) # 입력층
H = tf.keras.layers.Dense(5, activation='swish')(X) # hidden layer - 입력값 X / activation: 분류모델
Y = tf.keras.layers.Dense(1)(H) # 출력층 - 입력값 H
model = tf.keras.Model(X, Y)
model.compile(loss='mse')

model.summary()

 

BacthNormalization 추가

Layer 사이에 중간 결과 데이터들을 표준 정규화하는 계층

  • 학습 단계에서는 batch 단위로 정규화함
  • 무조건 쓴다고 가정!
X = tf.keras.Input(shape=[4])
H = tf.keras.layers.Dense(32, activation="swish")(X)
H = tf.keras.layers.BatchNormalization()(H) # Dense layer 사이에 BatchNormalization을 추가하면 학습이 더 잘 됨
H = tf.keras.layers.Dense(32, activation="swish")(H)
H = tf.keras.layers.BatchNormalization()(H)
Y = tf.keras.layers.Dense(3, activation="softmax")(H)
model = tf.keras.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics="accuracy")

model.summary()

 

Optimizer

  • Gradient Descent(경사하강법): 함수의 기울기(경사)를 구하여 함수의 극값에 이를 때까지 기울기가 낮은 쪽으로 반복하여 이동하는 방법
  • Momentum(관성): 이전에 이동했던 방향을 기억해서 다음 이동의 방향에 반영
  • Adagrad(Adaptive Gradient): 많이 이동한 변수(w)는 최적값에 근접했을 것이라는 가정하에, 많이 이동한 변수(w)를 기억해서 다음 이동의 거리를 줄임
  • Adam(RMSprop + Momentum)

 

Activation 함수

  • sigmoid
  • tanh
  • ReLU
  • LeaklyReLU
  • Maxout
  • ELU
  • swish
  • GELU

 

Validation 추가

model.fit(x_train, y_train, epochs=100, batch_size=128,
          validation_split=0.2 # validation_data=(x_val, y_val)
)

 

Flatten Layer 추가

X = tf.keras.Input(shape=[28, 28])
H = tf.keras.layers.Flatten()(X) # Flatten: 2차원 입력 X를 1차원으로
H = tf.keras.layers.Dense(64, activation='swish')(H)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.Model(X, Y)
model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy') # sparse_categorical_crossentropy: loss를 계산할 때 알아서 원핫인코딩을 함
model.summary()

 

Early Stopping

early = tf.keras.callbacks.EarlyStopping(
    monitor='val_loss', # 기본값: val_loss
    min_delta=0,  # 0 미만의 변화는 변화로 보지 않음(=변화로 보는 최솟값)
    patience=10,  # 10 epoch동안 개선이 없으면 중단
    restore_best_weights=True
)

result = model.fit(x_train, y_train, epochs=1000000, batch_size=128,
                   validation_split=0.2,
                   callbacks=[early]) # 1 epoch 마다 callback 실행

 

DropOut

지정된 확률의 개수만큼 노드를 랜덤하게 제외하고 학습을 진행

  • 오버피팅 방지, 성능 향상, 앙상블 효과
  • 학습이 된다면 최대한 높게 줄 수록 좋음 데이터가 충분하다면 0.4~0.6
X = tf.keras.Input(shape=[784])

H = tf.keras.layers.Dense(196,activation='swish')(X)
H = tf.keras.layers.BatchNormalization()(H)

H = tf.keras.layers.Dropout(0.6)(H) # dropdout
H = tf.keras.layers.Dense(49,activation='swish')(H)
H = tf.keras.layers.BatchNormalization()(H)

H = tf.keras.layers.Dropout(0.5)(H) # dropdout
H = tf.keras.layers.Dense(16,activation='swish')(H)
H = tf.keras.layers.BatchNormalization()(H)

H = tf.keras.layers.Dropout(0.3)(H) # dropdout
Y = tf.keras.layers.Dense(10, activation='softmax')(H)

model = tf.keras.Model(X, Y)
model.compile(loss="categorical_crossentropy", metrics="accuracy")
model.summary()

 

Class 코드

layer 1개

import tensorflow as tf

# 모델을 준비합니다.
# X = tf.keras.Input(shape=[1])
# Y = tf.keras.layers.Dense(1)(X)

class MyModel(tf.keras.Model):
    def __init__(self, **kwargs):
        super(MyModel, self).__init__(**kwargs)
        self.dense = tf.keras.layers.Dense(1)

    # fit할 때 실행됨
    def call(self, inputs):
        return self.dense(inputs)

# model = tf.keras.Model(X, Y)
# model.compile(loss="mse")
model = MyModel()
model.compile(loss='mse')

 

layer 2개

import tensorflow as tf

# 모델을 준비합니다.
# X = tf.keras.Input(shape=[1])
# H = tf.keras.layers.Dense(2, activation='swish')(X)
# Y = tf.keras.layers.Dense(1)(H)
# model = tf.keras.Model(X, Y)

class MyModel(tf.keras.Model):
    def __init__(self, **kwargs):
        super(MyModel, self).__init__(**kwargs)
        self.dense1 = tf.keras.layers.Dense(2, activation='swish')
        self.dense2 = tf.keras.layers.Dense(1)  # layer가 2개

    def call(self, X):
        H = self.dense1(X)
        Y = self.dense2(H)
        return Y

model = MyModel()
model.compile(loss='mse')

 

 

정리해 둔 걸 다시 정리하는 건데도 숨이 차는 군..

이는 곧 아직 많이 이해하는데 많이 부족하다는 의미겠죠? 

딥러닝 스터디 각인가.. 기초부터 딴딴히! 다지고 싶다는 생각이 들어서 책을 하나 사볼까 생각도 드는데.. 

혹시라도 같은 생각을 가지고 계신 분 있으면 조용히 연락 주세요 ㅎ_ㅎ

 

일주일간 딥러닝 배우면서 초반 3일은 딥러닝이라는 늪에 빠져서 쉬는 시간에 겨우 숨 한 번 쉴 수 있을 정도로 쫓아갔다 해도 과언이 아니라고 생각한다.

그래도 귓등으로만 듣던 과거에 비해서는 이제야 좀 그동안 들어왔던 내용들이 정리되는 느낌이 들어서 한 계단 올라온 걸 확실히 느낄 수 있었다!

딥러닝 너란 아이.. 범접하기 어려운 존재.. 

gradio와 OpenAI 이용하는 게 정말 재밌었는데 후반부를 정리해서 다시 돌아오겠습니다

(갑자기 마무리)

반응형
저작자표시 (새창열림)
'KT에이블스쿨' 카테고리의 다른 글
  • KT 에이블스쿨 AIVLE school 4기 AI트랙 6주차 후기 | 2차 미니프로젝트
  • KT 에이블스쿨 AIVLE school 4기 AI트랙 5주차 후기 - 2
  • KT 에이블스쿨 AIVLE school 4기 AI트랙 4주차 후기
  • KT 에이블스쿨 AIVLE school 4기 AI트랙 3주차 후기 | 1차 미니프로젝트
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
KT 에이블스쿨 AIVLE school 4기 AI트랙 5주차 후기 - 1
상단으로

티스토리툴바