생활코딩

Coding Everybody

코스 전체목록

닫기

부록2: 모델을 위한 팁

수업소개

BatchNormalization layer를 사용하여 보다 학습이 잘되는 모델을 만들어 봅니다.

강의 

 

소스코드

colab |  backend.ai

 보스턴 집값 예측

###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd

###########################
# 1.과거의 데이터를 준비합니다.
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/boston.csv'
보스턴 = pd.read_csv(파일경로)

# 종속변수, 독립변수
독립 = 보스턴[['crim', 'zn', 'indus', 'chas', 'nox', 
            'rm', 'age', 'dis', 'rad', 'tax',
            'ptratio', 'b', 'lstat']]
종속 = 보스턴[['medv']]
print(독립.shape, 종속.shape)

###########################
# 2. 모델의 구조를 만듭니다
X = tf.keras.layers.Input(shape=[13])
H = tf.keras.layers.Dense(8, activation='swish')(X)
H = tf.keras.layers.Dense(8, activation='swish')(H)
H = tf.keras.layers.Dense(8, activation='swish')(H)
Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')

# 2. 모델의 구조를 BatchNormalization layer를 사용하여 만든다.
X = tf.keras.layers.Input(shape=[13])

H = tf.keras.layers.Dense(8)(X)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

H = tf.keras.layers.Dense(8)(H)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

H = tf.keras.layers.Dense(8)(H)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

Y = tf.keras.layers.Dense(1)(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')

###########################
# 3.데이터로 모델을 학습(FIT)합니다.
model.fit(독립, 종속, epochs=1000)

아이리스 품종 분류

###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd

###########################
# 1.과거의 데이터를 준비합니다.
파일경로 = 'https://raw.githubusercontent.com/blackdew/tensorflow1/master/csv/iris.csv'
아이리스 = pd.read_csv(파일경로)

# 원핫인코딩
아이리스 = pd.get_dummies(아이리스)

# 종속변수, 독립변수
독립 = 아이리스[['꽃잎길이', '꽃잎폭', '꽃받침길이', '꽃받침폭']]
종속 = 아이리스[['품종_setosa', '품종_versicolor', '품종_virginica']]
print(독립.shape, 종속.shape)

###########################
# 2. 모델의 구조를 만듭니다
X = tf.keras.layers.Input(shape=[4])
H = tf.keras.layers.Dense(8, activation='swish')(X)
H = tf.keras.layers.Dense(8, activation='swish')(H)
H = tf.keras.layers.Dense(8, activation='swish')(H)
Y = tf.keras.layers.Dense(3, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy',
              metrics='accuracy')

###########################
# 2. 모델의 구조를 BatchNormalization layer를 사용하여 만든다.
X = tf.keras.layers.Input(shape=[4])

H = tf.keras.layers.Dense(8)(X)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

H = tf.keras.layers.Dense(8)(H)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

H = tf.keras.layers.Dense(8)(H)
H = tf.keras.layers.BatchNormalization()(H)
H = tf.keras.layers.Activation('swish')(H)

Y = tf.keras.layers.Dense(3, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy',
              metrics='accuracy')
              
###########################
# 3.데이터로 모델을 학습(FIT)합니다.
model.fit(독립, 종속, epochs=1000)

 

댓글

댓글 본문
  1. 범벌
    완료
  2. 청춘낭비금물
    완료
  3. ericpark
    완료했습니다.
  4. 완료
  5. 조지아
    완료
  6. DreamComeTrue
    완료!
  7. 바이크
    완료
  8. 완료
  9. jeseung
    완료!
  10. 후니
    완료
  11. 손님입장
    완료
  12. 완료
  13. 완료
  14. 차차caca
    완료!
  15. 고고고고
    완료
  16. 최수원
    완료!
  17. 먀린이
    완료
  18. 리코타
    완료
  19. 하하즐거운문
    감사합니다.
  20. 궉하
    완료!
  21. luckyo02
    완료
  22. forever04
    완료
  23. sunncho
    완료!
  24. 완료
  25. 소야
    감사합니다!
  26. 공부벌레는아니지만
    완료! 감사합니다
  27. 완료
  28. 완료!
  29. 헤링
    완료
  30. 초보딥러닝
    완료
  31. 제사마
    Done
  32. 과거로의여행
    완료... 졸리네요... ㅠㅠ
  33. 지니
    완료
  34. 양반
    감사합니다. 일단 batch_size =150 조건에서 말씀하신 결과를 확인할 수 있었습니다. 결국 parameter 값들에 따라서 결과값이 다르게 나타나게 된다는 것인 데, parameter tuning 이 필요하다는 얘기이네요. 공부를 더 해보도록 하겠습니다.
    대화보기
    • 호호
      완료
    • ok
    • 이선희
      마지막줄이 동영상이랑 위의 글이랑 달라요.
      동영상처럼 batch_size=150 을 넣어주니 accuracy가 1.0000이 나오네요
      맨 마지막 줄을 아래와 같이 해 보세요.
      model.fit(독립, 종속, epochs=1000, batch_size=150)

      아래 선생님 댓글에 '텐서플로우는 default로 32를 사용하게 되어있어요.' 라고 합니다. batch_size가 150이냐 32이냐 차이인 듯 해요
      대화보기
      • 하지빠더
        완료
      • 이민지
        완료
      • 무냉스
        완료
      • 완료하였습니다.^^
      • 양반
        저도 코딩에 문제가 없는 것을 확인했는 데, 동일한 경험을 하게 됩니다. 강사님께서 코딩한 프로그램을 Colab에서 실행시키더라도 Iris 문제에서는 크게 개선되는 결과를 얻질 못했습니다. 강사님의 유투브 영상상의 accuracy=1.0의 수렴 결과를 얻질 못했는 데, 동일한 코드인데도 다른 결과를얻게되는 이유가 무엇인지궁금하네요....
        좋은 하루 되세요.
        대화보기
        • 여어엉
          Batch Normaliztion은 NN을 faster and more stable through normalization of the input layer by re-centering and re-scaling 한다. 영문위키 https://en.wikipedia.org......ion
          완료.
        • 박지웅
          완료
        • 슈팍스
          완료
        • 완료
        • hoddigi
          완료
        • 해피쌤
          완료
        • 회색곰
          수강완료
        • David
          완료
        버전 관리
        이선비
        현재 버전
        선택 버전
        graphittie 자세히 보기