Tensorflow 101

텐서플로우를 이용하여 가장 간단한 형태의 텐서플로우 코드를 작성하여 딥러닝을 구현해보는 딥러닝 기초 수업입니다.

Tensorflow 101 텐서플로우를 이용하여 가장 간단한 형태의 텐서플로우 코드를 작성하여 딥러닝을 구현해보는 딥러닝 기초 수업입니다.

부록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. NewWorld
    완료!
  2. 소야
    신기해욥 완료
  3. 이숙번
    지금으로써는 정확히 말씀드릴 수는 없을 것 같습니다.
    오타를 잘 관찰해 보시면 좋을 것 같아요. 어딘가 다르게 작성한 부분이 있을 겁니다.

    작성한 colab 노트북의 링크를 걸어 주시면
    좀 더 자세한 확인이 가능할 것 같네요. :)
    대화보기
    • 이현송
      저도 보스턴은 더좋게나오는데 아이리스는 비슷하게 나와서 제 오타인가싶어서
      위의 코드를 colab을 했는데 여전한것 같아서 여쭤봅니다ㅠㅠ
      제컴퓨터 오류인가요??
    • 정다운
      완료
    • doryeng
      감사합니다.
      대화보기
      • kala555
        완료
      • ybkim95
        완료했습니다!
      • 이숙번
        200회 학습을 하는 것입니다. :)
        대화보기
        • doryeng
          질문이 있습니다.
          모델을 학습시키면서 epoch의 수를 정할 때,
          첫번째 코드셀에서 100회를 하고 코드셀을 바꿔 다음 코드셀에서 다시 100회를 실행하면
          100+100=200이 되는 것인지?
          아니면 100*100=10,000회가 되는 것입니까?
        • Slow-motion
          고생많으셨습니다. 정말 도움이 많이됐슴다!!
        • 지식탐구자
          완료
        • fotool
          완료
        • Jung Lee
          완료
        • 백지원
          완료
        • doryeng
          오늘로 이번 수업은 모두 완료하였습니다. 혼자 독학으로 하면서 이해를 못했던 부분이 많았었는데 이번 수업을 통해 잘 이해하게 되었습니다. 어려운 수업을 쉽게 설명해 주셔서 감사드리고 오랜 시간 준비하시느라 수고 많으셨습니다.
        • 완료!!
        • Kwang Chul Kim
          완료.^^
        • byoonn
          완료
        • Jin Kwang Kang
          완료!
        • 이선비
          방금 남긴 댓글과 같은 이슈일 것 같아요. :)
          아래 댓글을 확인해 주시고, 코드를 찬찬히 살펴보세요.
          대화보기
          • 이선비
            모델을 만들 때에 오타가 있지 않을까 의심해 봅니다.
            보통 하는 실수는 다음의 라인에서 입력을 H가 아닌 X로 주는 것입니다.
            (O) Y = tf.keras.Dense(3, activation='softmax')(H)
            (X) Y = tf.keras.Dense(3, activation='softmax')(X)
            아래처럼 작성하면 기존의 모델과 똑같은 모델을 돌리게 됩니다.
            한 번 확인해 보세요 :)
            대화보기
            • 이선비
              간단하게 설명하면 중간 중간의 결과를 다음 입력으로 넣기 전에 normalization을 해주는 거에요. (정확히는 standardization)을 해줍니다. 그렇게 각 히든레이어 입력 데이터의 scale을 맞추어 줌으로써 scale이 흔들려서 나타나게 되는 여러 문제들을 해결해 줍니다.

              가장 명쾌한 설명은 "앤드류 응" 교수님의 영상인 것 같아요. 한 번 공부해 보세요 :)
              https://www.youtube.com......nWs
              대화보기
              • Kim Wansang
                완룡
              • Hong Soonbong
                오~
              • 완료
              • 완료
              • 프로나다
                완료
              • 묵사마
                완료~
              • BatchNormalization 신박하게 정확도가 높아지네요. 완료!
              • 힁스
                완료
              • changkr28
                완료
              • 밀리
                완료
              • 완료
              • So-ra Jung
                완료
              • 디자인하는 남자
                섬세하고 배려있으면서 소중한 꿀팁~^^

                감사합니다.
              • Lee Manwoo
                완료.
              • Hyong Seok Yoon
                완료!
              • 이제부터야
                수고하셨습니다.^^
                완료!
              • jaiden
                완주했습니다. 감사드립니다.
              • 신나라
                좋은 tip 감사합니다. 수고하셨습니다.^^
              • byj0773
                5일차 3/4
              • 쿠마부인
                아. 자꾸 숙제가 생긴다. ㅎㅎㅎㅎ
              • 잔칫집국밥
                완료
              • 완료!
              • 최재윤
                완료
              • 최지호
                완료
              • 시바견
                완료
              • 씩뽀이
                완료
              • JunBurn
                완료!
                저는 아이리스 분류모델에선 Batch레이어를 추가했을 때 정확도와 로스값이 더 안 좋게 나오네요ㅠㅠ
              버전 관리
              이선비
              현재 버전
              선택 버전
              graphittie 자세히 보기